Asynchronous Activity Completion - Python SDK feature guide
How to Asynchronously complete an Activity using the Temporal Python SDK.
Asynchronous Activity Completion enables the Activity Function to return without the Activity Execution completing.
There are three steps to follow:
- The Activity provides the external system with identifying information needed to complete the Activity Execution. Identifying information can be a Task Token, or a combination of Namespace, Workflow Id, and Activity Id.
- The Activity Function completes in a way that identifies it as waiting to be completed by an external system.
- The Temporal Client is used to Heartbeat and complete the Activity.
To mark an Activity as completing asynchronously, do the following inside the Activity.
# Capture token for later completion
captured_token = activity.info().task_token
activity.raise_complete_async()
To update an Activity outside the Activity, use the get_async_activity_handle() method to get the handle of the Activity.
handle = my_client.get_async_activity_handle(task_token=captured_token)
Then, on that handle, you can call the results of the Activity, heartbeat
, complete
, fail
, or report_cancellation
method to update the Activity.
await handle.complete("Completion value.")