5.4 - 异步 Activity 完成

如何使用 Temporal Python SDK 异步完成 Activity。

异步 Activity 完成支持 Activity 函数在 Activity 执行尚未完成的情况下提前返回。

需要遵循以下三个步骤:

  1. Activity 向外部系统提供完成 Activity 执行所需的标识信息。标识信息可以是任务令牌(Task Token),也可以是命名空间(Namespace)、工作流 ID(Workflow Id)和 Activity ID(Activity Id)的组合。
  1. Activity 函数以某种方式完成,表明它正在等待外部系统完成执行。
  1. 使用 Temporal 客户端发送心跳,及完成 Activity。

要将 Activity 标记为异步完成,需要在 Activity 内部执行以下操作:

# Capture token for later completion
captured_token = activity.info().task_token
activity.raise_complete_async()

要在 Activity 外部更新 Activity,需使用 get_async_activity_handle() 方法获取 Activity 句柄。

handle = my_client.get_async_activity_handle(task_token=captured_token)

然后,在该句柄上调用 heartbeat、complete、fail 或 report_cancellation 方法,更新 Activity。

await handle.complete("Completion value.")