- 根据现有部署创建流运行
- 暂停和恢复调度或工作池
- 发送自定义通知
触发器
触发器指定了执行操作的条件。Prefect UI 包含许多常见条件的模板,例如:- 流运行状态更改(流运行标签仅在满足 `OR` 条件时计算)
- 工作池状态
- 工作队列状态
- 部署状态
- 指标阈值,例如平均持续时间、延迟或完成百分比
- 自定义事件触发器

操作
操作指定了当满足触发条件时自动化应执行的任务。目前的操作类型包括:| 操作 | 类型 |
|---|---|
| 取消流运行 | cancel-flow-run |
| 更改流运行的状态 | change-flow-run-state |
| 挂起流运行 | suspend-flow-run |
| 恢复流运行 | resume-flow-run |
| 运行部署 | run-deployment |
| 暂停部署调度 | pause-deployment |
| 恢复部署调度 | resume-deployment |
| 暂停工作池 | pause-work-pool |
| 恢复工作池 | resume-work-pool |
| 暂停工作队列 | pause-work-queue |
| 恢复工作队列 | resume-work-queue |
| 暂停自动化 | pause-automation |
| 恢复自动化 | resume-automation |
| 发送通知 | send-notification |
| 调用 Webhook | call-webhook |

选定和推断的操作目标
有些操作要求你选择操作目标,或指定操作目标应由系统自动推断。选定目标简单且适用于你明确知道操作对象的情况。例如,针对某个清理流或特定的通知。 推断目标则是从触发器本身推导出来的。 例如,如果触发器基于卡在运行状态的流运行,且操作是取消一个推断的流运行,那么它取消的就是导致触发器激发的那个流运行。 同样,如果触发器基于工作队列事件,且对应的操作是暂停推断的工作队列,那么该推断的工作队列就是发出该事件的那个队列。 Prefect 会尽可能推断相关事件,但有时并不存在相关事件。 为自动化指定名称(可选描述)。跟踪自动化操作
当自动化触发时,它会发出事件,你可以使用这些事件来跟踪发生了什么:- `prefect.automation.triggered` 或 `prefect.automation.resolved` - 当满足触发条件时发出
- `prefect.automation.action.triggered` - 当操作开始时发出
- `prefect.automation.action.executed` 或 `prefect.automation.action.failed` - 当操作完成时发出
| 关联资源角色 | 描述 |
|---|---|
triggering-event | 导致自动化触发的原始事件 |
automation-triggered-event | 导致执行操作的 `automation.triggered` 或 `automation.resolved` 事件 |
使用自动化发送通知
自动化支持通过任何已配置且有能力发送消息的预定义 Block 发送通知,包括:- 发送 Slack 频道消息
- 发送 Microsoft Teams 频道消息
- 发送邮件到电子邮箱地址

使用 Jinja 进行模板化
你可以通过 Jinja 语法在自动化操作中使用模板变量。模板变量使你能够动态包含自动化触发器的详细信息,例如流名称或池名称。 Jinja 模板变量语法将变量名包裹在双大括号中,例如:`{{ variable }}`。 你可以访问底层流运行对象的属性,包括: 除了其原生属性外,每个对象还包含 `id` 以及 `created` 和 `updated` 时间戳。 `flow_run|ui_url` 令牌返回在 UI 中查看流运行的 URL。 以下是一个关于基于流运行状态通知的示例:
扩展阅读
- 要了解有关可能触发自动化的 Prefect 事件的更多信息,请参阅事件文档。
- 请参阅 Webhooks 指南,了解如何创建 Webhook 并接收外部事件。