The FuncX Client

class funcx.FuncXClient(http_timeout=None, funcx_home='~/.funcx', asynchronous=False, loop=None, environment: Optional[str] = None, funcx_service_address: Optional[str] = None, results_ws_uri: Optional[str] = None, warn_about_url_mismatch: bool = True, task_group_id: Union[None, uuid.UUID, str] = None, do_version_check: bool = True, openid_authorizer: Optional[Any] = None, search_authorizer: Optional[Any] = None, fx_authorizer: Optional[Any] = None, *, login_manager: Optional[funcx.sdk.login_manager.protocol.LoginManagerProtocol] = None, **kwargs)

Main class for interacting with the funcX service

Holds helper operations for performing common tasks with the funcX service.

version_check(endpoint_version: Optional[str] = None) None

Check this client version meets the service’s minimum supported version.

Raises a VersionMismatch error on failure.

logout()

Remove credentials from your local system

get_task(task_id)

Get a funcX task.

Parameters:

task_id (str) – UUID of the task

Returns:

Task block containing “status” key.

Return type:

dict

get_result(task_id)

Get the result of a funcX task

Parameters:

task_id (str) – UUID of the task

Returns:

Result obj

Return type:

If task completed

Raises:

Exception obj – Exception due to which the task failed:

get_batch_result(task_id_list)

Request status for a batch of task_ids

run(*args, endpoint_id=None, function_id=None, **kwargs) str

Initiate an invocation

Parameters:
  • *args (Any) – Args as specified by the function signature

  • endpoint_id (uuid str) – Endpoint UUID string. Required

  • function_id (uuid str) – Function UUID string. Required

  • asynchronous (bool) – Whether or not to run the function asynchronously

Returns:

  • task_id (str)

  • UUID string that identifies the task if asynchronous is False

  • funcX Task (asyncio.Task)

  • A future that will eventually resolve into the function’s result if

  • asynchronous is True

create_batch(task_group_id=None, create_websocket_queue=False) funcx.sdk.batch.Batch

Create a Batch instance to handle batch submission in funcX

Parameters:
  • task_group_id (str) – Override the session wide session_task_group_id with a different task_group_id for this batch. If task_group_id is not specified, it will default to using the client’s session_task_group_id

  • create_websocket_queue (bool) – Whether to create a websocket queue for the task_group_id if it isn’t already created

Returns:

Status block containing “status” key.

Return type:

Batch instance

batch_run(batch) List[str]

Initiate a batch of tasks to funcX

Parameters:

batch (a Batch object) –

Returns:

task_ids

Return type:

a list of UUID strings that identify the tasks

register_endpoint(name, endpoint_id, metadata=None, endpoint_version=None)

Register an endpoint with the funcX service.

Parameters:
  • name (str) – Name of the endpoint

  • endpoint_id (str) – The uuid of the endpoint

  • metadata (dict) – endpoint metadata, see default_config example

  • endpoint_version (str) – Version string to be passed to the webService as a compatibility check

Returns:

{‘endpoint_id’<>,

’address’ : <>, ‘client_ports’: <>}

Return type:

A dict

get_containers(name, description=None)

Register a DLHub endpoint with the funcX service and get the containers to launch.

Parameters:
  • name (str) – Name of the endpoint

  • description (str) – Description of the endpoint

Returns:

The port to connect to and a list of containers

Return type:

int

get_container(container_uuid, container_type)

Get the details of a container for staging it locally.

Parameters:
  • container_uuid (str) – UUID of the container in question

  • container_type (str) – The type of containers that will be used (Singularity, Shifter, Docker)

Returns:

The details of the containers to deploy

Return type:

dict

get_endpoint_status(endpoint_uuid)

Get the status reports for an endpoint.

Parameters:

endpoint_uuid (str) – UUID of the endpoint in question

Returns:

The details of the endpoint’s stats

Return type:

dict

register_function(function, function_name=None, container_uuid=None, description=None, public=False, group=None, searchable=True)

Register a function code with the funcX service.

Parameters:
  • function (Python Function) – The function to be registered for remote execution

  • function_name (str) – The entry point (function name) of the function. Default: None

  • container_uuid (str) – Container UUID from registration with funcX

  • description (str) – Description of the file

  • public (bool) – Whether or not the function is publicly accessible. Default = False

  • group (str) – A globus group uuid to share this function with

  • searchable (bool) – If true, the function will be indexed into globus search with the appropriate permissions

Returns:

function uuid – UUID identifier for the registered function

Return type:

str

search_function(q, offset=0, limit=10, advanced=False)

Search for function via the funcX service

Parameters:
  • q (str) – free-form query string

  • offset (int) – offset into total results

  • limit (int) – max number of results to return

  • advanced (bool) – allows elastic-search like syntax in query string

Return type:

FunctionSearchResults

search_endpoint(q, scope='all', owner_id=None)
Parameters:
  • q

  • scope (str) – Can be one of {‘all’, ‘my-endpoints’, ‘shared-with-me’}

  • owner_id – should be urn like f”urn:globus:auth:identity:{owner_uuid}”

register_container(location, container_type, name='', description='')

Register a container with the funcX service.

Parameters:
  • location (str) – The location of the container (e.g., its docker url). Required

  • container_type (str) – The type of containers that will be used (Singularity, Shifter, Docker). Required

  • name (str) – A name for the container. Default = ‘’

  • description (str) – A description to associate with the container. Default = ‘’

Returns:

The id of the container

Return type:

str

add_to_whitelist(endpoint_id, function_ids)

Adds the function to the endpoint’s whitelist

Parameters:
  • endpoint_id (str) – The uuid of the endpoint

  • function_ids (list) – A list of function id’s to be whitelisted

Returns:

The response of the request

Return type:

json

get_whitelist(endpoint_id)

List the endpoint’s whitelist

Parameters:

endpoint_id (str) – The uuid of the endpoint

Returns:

The response of the request

Return type:

json

delete_from_whitelist(endpoint_id, function_ids)

List the endpoint’s whitelist

Parameters:
  • endpoint_id (str) – The uuid of the endpoint

  • function_ids (list) – A list of function id’s to be whitelisted

Returns:

The response of the request

Return type:

json