plumpy.communications module#
Module for general kiwipy communication methods
- class plumpy.communications.Communicator[source]#
Bases:
objectThe interface for a communicator used to both send and receive various types of message.
- abstract add_broadcast_subscriber(subscriber: Callable[[Communicator, Any, Any, Any, Any], Any], identifier=None) Any[source]#
Add a broadcast subscriber that will receive all broadcast messages
- Parameters:
subscriber – the subscriber function to be called
identifier – an optional identifier for the subscriber
- Returns:
an identifier for the subscriber and can be subsequently used to remove it
- abstract add_rpc_subscriber(subscriber: Callable[[Communicator, Any], Any], identifier=None) Any[source]#
Add an RPC subscriber to the communicator with an optional identifier. If an identifier is not provided the communicator will generate a unique one. In all cases the identifier will be returned.
- abstract add_task_subscriber(subscriber: Callable[[Communicator, Any], Any], identifier=None) Any[source]#
Add a task subscriber to the communicator’s default queue. Returns the identifier.
- Parameters:
subscriber – The task callback function
identifier – the subscriber identifier
- abstract broadcast_send(body, sender=None, subject=None, correlation_id=None) bool[source]#
Broadcast a message to all subscribers
- abstract close()[source]#
Close a communicator, free up all resources and do not allow any further operations
- abstract remove_broadcast_subscriber(identifier)[source]#
Remove a broadcast subscriber
- Parameters:
identifier – the identifier of the subscriber to remove
- abstract remove_rpc_subscriber(identifier)[source]#
Remove an RPC subscriber given the identifier. Raises a ValueError if there is no such subscriber.
- Parameters:
identifier – The RPC subscriber identifier
- abstract remove_task_subscriber(identifier)[source]#
Remove a task subscriber from the communicator’s default queue.
- Parameters:
identifier – the subscriber to remove
- Raises:
ValueError if identifier does not correspond to a known subscriber
- abstract rpc_send(recipient_id, msg)[source]#
Initiate a remote procedure call on a recipient. This method returns a future representing the outcome of the call.
- Parameters:
recipient_id – The recipient identifier
msg – The body of the message
- Returns:
A future corresponding to the outcome of the call
- Return type:
kiwipy.Future
- abstract task_send(task, no_reply=False) Future[source]#
Send a task messages, this will be queued and picked up by a worker at some point in the future. The method returns a future representing the outcome of the task.
- Parameters:
task – The task message
no_reply (bool) – Do not send a reply containing the result of the task
- Returns:
A future corresponding to the outcome of the task
- exception plumpy.communications.DeliveryFailed[source]#
Bases:
ExceptionFailed to deliver a message
- exception plumpy.communications.RemoteException[source]#
Bases:
ExceptionAn exception occurred at the remote end of the call
- exception plumpy.communications.TaskRejected[source]#
Bases:
ExceptionA task was rejected at the remote end
- plumpy.communications.plum_to_kiwi_future(plum_future: Future) Future[source]#
Return a kiwi future that resolves to the outcome of the plum future
- Parameters:
plum_future – the plum future
- Returns:
the kiwipy future
- plumpy.communications.wrap_communicator(communicator: Communicator, loop: AbstractEventLoop | None = None) LoopCommunicator[source]#
Wrap a communicator such that all callbacks made to any subscribers are scheduled on the given event loop.
If the communicator is already an equivalent communicator wrapper then it will not be wrapped again.
- Parameters:
communicator – the communicator to wrap
loop – the event loop to schedule callbacks on
- Returns:
a communicator wrapper