airflow - 气流调度程序不会排队一些已在 UI 中清除的任务
问题描述
我在 ui 中有一堆 DAG 运行。如果我在所有 DAG 运行中清除某些任务,则某些任务会正确触发,而其他任务则卡在清除状态。
目前我只是使用气流 CLI 来回填这些任务。这可行,但不幸的是,我需要一个完整的 CLI 会话来完成清理/重新处理方案。
解决方案
原因是 DAG 运行的命名(以及类型)。
如果您进入气流元数据数据库并打开表“dag_runs”,您将看到 run_id。调度程序使用“scheduled__”标识它创建的运行,后跟日期时间。如果您回填,run_id 将被命名为“backfil_”,后跟日期时间。
调度程序只会检查和排队以“scheduled__”开头的 run_ids 的任务,表示DagRunType 为“scheduled”。
如果您将 run_id 从 backfill_ 重命名为 schedule__,调度程序将识别 dag 运行并在下面调度已清除的任务。
此 SQL 查询会将 bacfill_ 更改为 schelduled__:
UPDATE dag_run
SET run_id = Replace(run_id, 'backfill_', 'scheduled__')
where id in (
select id from dag_run where ("run_id"::TEXT LIKE '%backfill_%'));
-- note that backfill_ is a single underscore, and scheduled__ is two.
-- This is not a mistake in my case. But please review the values in your tabel.
推荐阅读
- django - Django 动态表单 - 验证 Select 字段
- c++ - 通过域名而不是使用 C/++ 套接字的 IP 地址访问 Web 服务器
- python - 向条形图添加更多数据
- python - 如何遍历 pandas 中的行并获取特定但不同的列名
- swift - 快速将 2 个视图与自定义颜色混合?
- hyperledger-fabric - 将排序者添加到超级账本结构中的现有通道
- php - HTML 表单 - 使用 PHP 帖子输入隐藏的输入类型不起作用
- java - Java字符串将存储的值重置为null
- javascript - 使用 npm store.js 包在 cookie 上设置过期日期
- python - Discord.py 赋予角色