简体   繁体   English

触发 ExternalTask​​Sensor 时气流卡住

[英]Airflow stuck while trigger ExternalTaskSensor

can anyone explain why Airflow's ExternalTaskSensor work proper on scheduling but not on trigger from Frontend?谁能解释为什么 Airflow 的 ExternalTask​​Sensor 在调度时正常工作,而不是在前端触发时正常工作? I tried several version, alway with the same result.我尝试了几个版本,结果总是一样。 The task stops on up_fro_reschedule.任务在 up_fro_reschedule 上停止。

example_external_task_marker_child and example_external_task_marker_parent example_external_task_marker_child 和 example_external_task_marker_parent

Task.log任务日志

[2020-03-08 22:25:25,071] {taskinstance.py:866} INFO - Executing <Task(ExternalTaskSensor): child_task1> on 2020-03-08T21:16:27.647772+00:00
[2020-03-08 22:25:25,075] {standard_task_runner.py:53} INFO - Started process 58496 to run task
[2020-03-08 22:25:25,261] {logging_mixin.py:91} INFO - Running <TaskInstance: example_external_task_marker_child.child_task1 2020-03-08T21:16:27.647772+00:00 [None]> on host 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
[2020-03-08 22:25:25,363] {taskinstance.py:934} INFO - Exporting the following env vars:
AIRFLOW_CTX_DAG_OWNER=airflow
AIRFLOW_CTX_DAG_ID=example_external_task_marker_child
AIRFLOW_CTX_TASK_ID=child_task1
AIRFLOW_CTX_EXECUTION_DATE=2020-03-08T21:16:27.647772+00:00
AIRFLOW_CTX_DAG_RUN_ID=manual__2020-03-08T21:16:27.647772+00:00
[2020-03-08 22:25:25,401] {external_task_sensor.py:119} INFO - Poking for example_external_task_marker_parent.parent_task on 2020-03-08T21:16:27.647772+00:00 ... 
[2020-03-08 22:25:25,538] {taskinstance.py:1110} INFO - Rescheduling task, marking task as UP_FOR_RESCHEDULE
[2020-03-08 22:25:29,903] {logging_mixin.py:91} INFO - [2020-03-08 22:25:29,902] {local_task_job.py:103} INFO - Task exited with return code 0
[2020-03-08 22:26:43,224] {taskinstance.py:656} INFO - Dependencies all met for <TaskInstance: example_external_task_marker_child.child_task1 2020-03-08T21:16:27.647772+00:00 [queued]>
[2020-03-08 22:26:43,275] {taskinstance.py:656} INFO - Dependencies all met for <TaskInstance: example_external_task_marker_child.child_task1 2020-03-08T21:16:27.647772+00:00 [queued]>
[2020-03-08 22:26:43,275] {taskinstance.py:845} INFO - 

By default the ExternalTaskSensor will monitor the external_dag_id with the same execution date that the sensor DAG.默认情况下, ExternalTaskSensor将使用与传感器 DAG 相同的执行日期监控external_dag_id This works great when both dags are run in a the same schedule or when you know exactly the timedelta between the two.当两个 dag 以相同的时间表运行或当您确切知道两者之间的 timedelta 时,这非常有效。

However, when a dag is triggered manually or by another dag, you cannot known for sure the the exact execution date of any of these two dags.但是,当一个 dag 被手动触发或由另一个 dag 触发时,您无法确定这两个 dag 中任何一个的确切执行日期。 This is why it failed when triggered from the frontend.这就是从前端触发时失败的原因。

You can workaround this if you trigger your dag with TriggerDagRunOperator .如果您使用TriggerDagRunOperator触发您的 dag,您可以解决此问题。 Take a look at this question for more info.看看这个问题了解更多信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM