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)