academy.exchange.cloud.client¶
HttpAgentRegistration
dataclass
¶
HttpExchangeTransport
¶
HttpExchangeTransport(
mailbox_id: EntityId,
session: ClientSession,
connection_info: _HttpConnectionInfo,
)
Bases: ExchangeTransportMixin
, NoPickleMixin
Http exchange client.
Parameters:
-
mailbox_id
(EntityId
) –Identifier of the mailbox on the exchange. If there is not an id provided, the exchange will create a new client mailbox.
-
session
(ClientSession
) –Http session.
-
connection_info
(_HttpConnectionInfo
) –Exchange connection info.
Source code in academy/exchange/cloud/client.py
new
async
classmethod
¶
new(
*,
connection_info: _HttpConnectionInfo,
mailbox_id: EntityId | None = None,
name: str | None = None
) -> Self
Instantiate a new transport.
Parameters:
-
connection_info
(_HttpConnectionInfo
) –Exchange connection information.
-
mailbox_id
(EntityId | None
, default:None
) –Bind the transport to the specific mailbox. If
None
, a new user entity will be registered and the transport will be bound to that mailbox. -
name
(str | None
, default:None
) –Display name of the registered entity if
mailbox_id
isNone
.
Returns:
-
Self
–An instantiated transport bound to a specific mailbox.
Source code in academy/exchange/cloud/client.py
HttpExchangeFactory
¶
HttpExchangeFactory(
url: str,
auth_method: Literal["globus"] | None = None,
additional_headers: dict[str, str] | None = None,
ssl_verify: bool | None = None,
)
Bases: ExchangeFactory[HttpExchangeTransport]
Http exchange client factory.
Parameters:
-
url
(str
) –Address of HTTP exchange
-
auth_method
(Literal['globus'] | None
, default:None
) –Method to get authorization headers
-
additional_headers
(dict[str, str] | None
, default:None
) –Any other information necessary to communicate with the exchange. Used for passing the Globus bearer token
-
ssl_verify
(bool | None
, default:None
) –Same as requests.Session.verify. If the server's TLS certificate should be validated. Should be true if using HTTPS Only set to false for testing or local development.
Source code in academy/exchange/cloud/client.py
create_agent_client
async
¶
create_agent_client(
registration: AgentRegistration[AgentT],
request_handler: RequestHandler,
) -> AgentExchangeClient[AgentT, ExchangeTransportT]
Create a new agent exchange client.
An agent must be registered with the exchange before an exchange client can be created. For example:
factory = ExchangeFactory(...)
user_client = factory.create_user_client()
registration = user_client.register_agent(...)
agent_client = factory.create_agent_client(registration, ...)
Parameters:
-
registration
(AgentRegistration[AgentT]
) –Registration information returned by the exchange.
-
request_handler
(RequestHandler
) –Agent request message handler.
Returns:
-
AgentExchangeClient[AgentT, ExchangeTransportT]
–Agent exchange client.
Raises:
-
BadEntityIdError
–If an agent with
registration.agent_id
is not already registered with the exchange.
Source code in academy/exchange/__init__.py
create_user_client
async
¶
create_user_client(
*, name: str | None = None, start_listener: bool = True
) -> UserExchangeClient[ExchangeTransportT]
Create a new user in the exchange and associated client.
Parameters:
-
name
(str | None
, default:None
) –Display name of the client on the exchange.
-
start_listener
(bool
, default:True
) –Start a message listener thread.
Returns:
-
UserExchangeClient[ExchangeTransportT]
–User exchange client.
Source code in academy/exchange/__init__.py
spawn_http_exchange
¶
spawn_http_exchange(
host: str = "0.0.0.0",
port: int = 5463,
*,
level: int | str = WARNING,
timeout: float | None = None
) -> Generator[HttpExchangeFactory]
Context manager that spawns an HTTP exchange in a subprocess.
This function spawns a new process (rather than forking) and wait to
return until a connection with the exchange has been established.
When exiting the context manager, SIGINT
will be sent to the exchange
process. If the process does not exit within 5 seconds, it will be
killed.
Warning
The exclusion of authentication and ssl configuration is intentional. This method should only be used for temporary exchanges in trusted environments (i.e. the login node of a cluster).
Parameters:
-
host
(str
, default:'0.0.0.0'
) –Host the exchange should listen on.
-
port
(int
, default:5463
) –Port the exchange should listen on.
-
level
(int | str
, default:WARNING
) –Logging level.
-
timeout
(float | None
, default:None
) –Connection timeout when waiting for exchange to start.
Returns:
-
Generator[HttpExchangeFactory]
–Exchange interface connected to the spawned exchange.