跳转到内容
搜索文档

使用 Cron 触发器开发基于时间感知的应用

最后更新 查看 MarkdownAgent 设置

Cloudflare Workflows 提供了管理异步、持久化流程的强大方法。通过使用 scheduled 处理程序显式计划任务以及通过 step.sleep 暂停执行,开发者能够构建复杂、具备时间感知的应用。

工作流允许您在不阻塞用户的情况下启动异步处理过程。这在 addInteraction 函数中得到了展示,该函数创建了 INTERACTION 工作流的一个新实例。

src/index.tsx 中找到 addInteraction 函数:

参见此处

当用户与双关语进行交互时(例如点赞),就会调用此函数。它不是直接执行交互逻辑,而是将工作卸载到工作流中执行。

检查 src/workflows/interaction.ts 中的 InteractionWorkflow 定义。此工作流执行诸如检查用户/会话是否存在以及在数据库中记录交互等任务。

参见此处

排行榜代码

后台处理的一个常见用例是处理数据并缓存结果,例如构建排行榜。

检查 src/workflows/leaderboard.ts 中的 LeaderboardWorkflow。此工作流执行数据库查询以查找热门双关语,然后将结果存储在 Cloudflare KV(键值存储)中。

参见此处

可以计划定期运行此工作流,以更新排行榜数据。

Wrangler 配置

Wrangler 配置文件用于配置您的 Worker 和工作流。这包括定义到 KV 命名空间等资源的绑定,以及设置工作流的计划运行时间。

此项目仓库使用了较旧的模式,即在顶级具有一个 [triggers] 部分,并在主 Worker 中配有 scheduled 处理程序,以便在定时器触发时创建一个 LEADERBOARD_WORKFLOW 实例。

参见此处

在当前的工作流项目中,您通常可以直接在其绑定上计划工作流:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "workflows": [
    {
      "name": "leaderboard-workflow",
      "binding": "LEADERBOARD_WORKFLOW",
      "class_name": "LeaderboardWorkflow",
      "schedules": [
        "*/30 * * * *"
      ]
    }
  ]
}
[[workflows]]
name = "leaderboard-workflow"
binding = "LEADERBOARD_WORKFLOW"
class_name = "LeaderboardWorkflow"
schedules = ["*/30 * * * *"]

仅当您在确定是否创建工作流实例之前需要自定义逻辑时,才使用单独的 Cron 触发器和 scheduled 处理程序。在配置工作流计划时,请使用最新的 Wrangler 版本。

Puntificator:使用 AI 自动生成更多双关语

工作流也可以用于更复杂的、多步骤的处理过程,包括与 AI 模型进行交互。PuntificatorWorkflow 就是一个利用 AI 生成和评估新双关语的例子。

检查 src/workflows/puntificator.ts 中的 PuntificatorWorkflow 定义。

参见此处

此工作流包括以下步骤:

  1. 检索热门双关语。
  2. 使用 AI 模型基于趋势创建一个新的双关语。
  3. 使用另一个 AI 模型评判所创建双关语的质量。
  4. 如果双关语达到特定的评分阈值,则保存它。

关键的是,此工作流包含一个 step.sleep 调用:

参见此处

此步骤将工作流的执行暂停指定的持续时间。这在基于已发布双关语的受欢迎程度采取进一步行动之前,等待并考虑用户对该双关语的反馈时非常有用。

嵌套工作流

工作流可以启动其他工作流,从而允许您将较小的模块化单元组合成复杂的处理流程。

PuntificatorWorkflow 中,找到其调用 PUBLISH 工作流的位置。

参见此处

这展示了一个工作流如何触发另一个工作流,从而实现关注点分离和模块化设计。

检查 src/workflows/publish.ts 中的 PublishWorkflow

参见此处

此工作流处理发布双关语的逻辑,通常包括将其保存到数据库中并使其在网站上可见。

工作流实例

您可以使用 wrangler 命令行工具手动触发工作流,并检查其执行状态和输出。

手动触发 PuntificatorWorkflow

npx wrangler workflows trigger puntificator

该命令将对工作流的一个实例进行排队。您将收到成功消息和实例 ID。

描述工作流的最新实例:

npx wrangler workflows instances describe puntificator latest

该命令将显示有关指定工作流最近一次运行的详细信息,包括其开始时间、结束时间、持续时间、状态以及工作流内每个单独步骤的状态。您可以观察到诸如 create-new-pun-based-on-trendsjudge-punsave-punpublishwait-for-publish(显示 'Sleeping' 状态)等步骤。

这篇文档对您有帮助吗?