4.8 - 定时器
工作流可以为固定的时间周期设置持久化定时器(Timer)。该功能在不同 SDK 中的命名有所不同,有的称为 sleep(),有的称为 timer()。
工作流可以休眠数月之久。定时器具备持久化特性,因此即便在计时到期时,Worker 或 Temporal 服务处于宕机状态,只要它们恢复正常运行,sleep() 调用便正常返回,工作流代码也继续往下执行。
休眠操作对资源占用极低——不阻塞进程,单个 Worker 可支撑数百万个定时器同时运行。
若要在 Python 中设置定时器,只需调用 asyncio.sleep() 函数,同时传入希望等待的秒数即可。
import asyncio
from temporalio import workflow
@workflow.defn
class LoopingWorkflow:
@workflow.run
async def run(self, iteration: int) -> None:
if iteration == 5:
return
await asyncio.sleep(10)
workflow.continue_as_new(iteration + 1)