Airflow 气流-将给定dag_id和run_id的特定任务_id标记为成功或失败

Airflow 气流-将给定dag_id和run_id的特定任务_id标记为成功或失败,airflow,Airflow,我可以从外部(使用http请求?)将与dag_id关联的特定任务_id标记为成功/失败,并将运行_id标记为成功/失败 我的任务是外部系统上长期运行的任务,我不希望我的任务轮询系统以查找状态。。因为我们可以同时运行几个1000个任务 理想情况下,我希望我的任务 发出http请求以启动我的外部作业 睡觉 作业完成后,it(外部系统或我的作业的生成后操作)通知气流任务已完成(由任务id、dag id和运行id标识) 谢谢气流还没有静止终点。然而,你有几个选择 -使用“气流”命令行实用程序将作业标

我可以从外部(使用http请求?)将与dag_id关联的特定任务_id标记为成功/失败,并将运行_id标记为成功/失败

我的任务是外部系统上长期运行的任务,我不希望我的任务轮询系统以查找状态。。因为我们可以同时运行几个1000个任务

理想情况下,我希望我的任务

  • 发出http请求以启动我的外部作业
  • 睡觉
  • 作业完成后,it(外部系统或我的作业的生成后操作)通知气流任务已完成(由任务id、dag id和运行id标识)

谢谢

气流还没有静止终点。然而,你有几个选择 -使用“气流”命令行实用程序将作业标记为成功。例如,在python中使用Popen。
-直接更新Airflow DB table task_实例

您可以通过将SQL查询直接发送到Airflow的元数据数据库来解决此问题:

UPDATE task_instance
SET state = 'success',
    try_number = 0
WHERE
    task_id = 'YOUR-TASK-ID'
AND
    dag_id = 'YOUR-DAG-ID'
AND
    execution_date = '2019-06-27T16:56:17.789842+00:00';
注释

  • execution\u date
    过滤器非常重要,它通过
    execution\u date
    而不是通过它们的
    run\u id
    运行。这意味着您确实需要获得DagRun的执行/运行日期才能使其正常运行
  • 添加了
    try\u number=0
    部分,因为如果气流注意到try\u number已经达到极限(
    max\u trys
    ),有时会将任务重置为
    失败
您可以在Airflow的源代码中看到它: