直接从 Workflow 绑定调度 Workflow 实例
您现在可以在 wrangler.jsonc 中直接将 cron 计划附加到 Workflow 绑定(binding)。每次计划运行都会自动创建一个新的 Workflow 实例,因此您无需定义单独的带有 scheduled 处理程序的 Worker 来按间隔触发您的 Workflow。
例如,您可以在同一个 Workflow 上配置每小时、每 15 分钟或工作日计划:
{
"workflows": [
{
"name": "my-scheduled-workflow",
"binding": "MY_WORKFLOW",
"class_name": "MyScheduledWorkflow",
"schedules": ["0 * * * *", "*/15 * * * *", "0 9 * * MON-FRI"],
},
],
}Cron 工作负载获得 Workflows 的所有相同优势,包括内置重试、多步骤持久执行以及 Workflows 的可配置超时。
import {
WorkflowEntrypoint,
WorkflowEvent,
WorkflowStep,
} from "cloudflare:workers";
// 根据 wrangler.jsonc 中为 MY_WORKFLOW 绑定定义的每个 cron 计划自动运行。
export class MyScheduledWorkflow extends WorkflowEntrypoint<Env> {
async run(event: WorkflowEvent, step: WorkflowStep) {
const data = await step.do("fetch source data", async () => {
return await fetchSourceData();
});
// 如果此步骤失败,则仅使用以下自定义逻辑重试此步骤
await step.do(
"process and store results",
{
retries: { limit: 5, delay: "30 seconds", backoff: "exponential" },
timeout: "10 minutes",
},
async () => {
await processAndStore(data);
},
);
}
}这使得构建定期计划的作业(例如数据库备份、发票生成、报告聚合和清理任务)变得更加容易,而无需配置单独的 Cron Trigger 入口点。
有关更多信息,请参阅触发 Workflows。