Airflow DAG 运行 已触发,但从未执行过?
Airflow DAG Run triggered, but never executed?
我发现自己处于手动触发 DAG 运行(通过 airflow trigger_dag datablocks_dag
)运行 的情况,并且 Dag 运行 出现在界面,但它会永远保持 "Running",实际上什么都不做。
当我在 UI 中检查此 DAG 运行 时,我看到以下内容:
我已将 start_date
设置为 datetime(2016, 1, 1)
,并将 schedule_interval
设置为 @once
。 我 通过阅读文档了解到,自从 start_date
< 现在,DAG 将被触发。 @once
确保它只发生一次。
我的日志文件说:
[2017-07-11 21:32:05,359] {jobs.py:343} DagFileProcessor0 INFO - Started process (PID=21217) to work on /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py
[2017-07-11 21:32:05,359] {jobs.py:534} DagFileProcessor0 ERROR - Cannot use more than 1 thread when using sqlite. Setting max_threads to 1
[2017-07-11 21:32:05,365] {jobs.py:1525} DagFileProcessor0 INFO - Processing file /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py for tasks to queue
[2017-07-11 21:32:05,365] {models.py:176} DagFileProcessor0 INFO - Filling up the DagBag from /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py
[2017-07-11 21:32:05,703] {models.py:2048} DagFileProcessor0 WARNING - schedule_interval is used for <Task(BashOperator): foo>, though it has been deprecated as a task parameter, you need to specify it as a DAG parameter instead
[2017-07-11 21:32:05,703] {models.py:2048} DagFileProcessor0 WARNING - schedule_interval is used for <Task(BashOperator): foo2>, though it has been deprecated as a task parameter, you need to specify it as a DAG parameter instead
[2017-07-11 21:32:05,704] {jobs.py:1539} DagFileProcessor0 INFO - DAG(s) dict_keys(['example_branch_dop_operator_v3', 'latest_only', 'tutorial', 'example_http_operator', 'example_python_operator', 'example_bash_operator', 'example_branch_operator', 'example_trigger_target_dag', 'example_short_circuit_operator', 'example_passing_params_via_test_command', 'test_utils', 'example_subdag_operator', 'example_subdag_operator.section-1', 'example_subdag_operator.section-2', 'example_skip_dag', 'example_xcom', 'example_trigger_controller_dag', 'latest_only_with_trigger', 'datablocks_dag']) retrieved from /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py
[2017-07-11 21:32:07,083] {models.py:3529} DagFileProcessor0 INFO - Creating ORM DAG for datablocks_dag
[2017-07-11 21:32:07,234] {models.py:331} DagFileProcessor0 INFO - Finding 'running' jobs without a recent heartbeat
[2017-07-11 21:32:07,234] {models.py:337} DagFileProcessor0 INFO - Failing jobs without heartbeat after 2017-07-11 21:27:07.234388
[2017-07-11 21:32:07,240] {jobs.py:351} DagFileProcessor0 INFO - Processing /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py took 1.881 seconds
可能是什么导致了这个问题?
我是不是误解了start_date
的运作方式?
或者日志文件中看似令人担忧的 schedule_interval
WARNING
行是否可能是问题的根源?
问题是 dag 暂停了。
在您提供的屏幕截图中,在左上角,将其翻转到 On
即可。
这是开始使用气流时的常见问题 "gotcha"。
接受的答案是正确的。这个问题可以通过 UI 来处理。
另一种处理方法是使用配置。
默认情况下,所有 dag 都在创建时暂停。
您可以在 airflow.cfg
中检查默认配置
# Are DAGs paused by default at creation
dags_are_paused_at_creation = True
打开标志将在下一次心跳后启动您的 dag。
相关gitissue
我有同样的问题,但它必须与 depends_on_past 或 wait_for_downstream
我发现自己处于手动触发 DAG 运行(通过 airflow trigger_dag datablocks_dag
)运行 的情况,并且 Dag 运行 出现在界面,但它会永远保持 "Running",实际上什么都不做。
当我在 UI 中检查此 DAG 运行 时,我看到以下内容:
我已将 start_date
设置为 datetime(2016, 1, 1)
,并将 schedule_interval
设置为 @once
。 我 通过阅读文档了解到,自从 start_date
< 现在,DAG 将被触发。 @once
确保它只发生一次。
我的日志文件说:
[2017-07-11 21:32:05,359] {jobs.py:343} DagFileProcessor0 INFO - Started process (PID=21217) to work on /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py
[2017-07-11 21:32:05,359] {jobs.py:534} DagFileProcessor0 ERROR - Cannot use more than 1 thread when using sqlite. Setting max_threads to 1
[2017-07-11 21:32:05,365] {jobs.py:1525} DagFileProcessor0 INFO - Processing file /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py for tasks to queue
[2017-07-11 21:32:05,365] {models.py:176} DagFileProcessor0 INFO - Filling up the DagBag from /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py
[2017-07-11 21:32:05,703] {models.py:2048} DagFileProcessor0 WARNING - schedule_interval is used for <Task(BashOperator): foo>, though it has been deprecated as a task parameter, you need to specify it as a DAG parameter instead
[2017-07-11 21:32:05,703] {models.py:2048} DagFileProcessor0 WARNING - schedule_interval is used for <Task(BashOperator): foo2>, though it has been deprecated as a task parameter, you need to specify it as a DAG parameter instead
[2017-07-11 21:32:05,704] {jobs.py:1539} DagFileProcessor0 INFO - DAG(s) dict_keys(['example_branch_dop_operator_v3', 'latest_only', 'tutorial', 'example_http_operator', 'example_python_operator', 'example_bash_operator', 'example_branch_operator', 'example_trigger_target_dag', 'example_short_circuit_operator', 'example_passing_params_via_test_command', 'test_utils', 'example_subdag_operator', 'example_subdag_operator.section-1', 'example_subdag_operator.section-2', 'example_skip_dag', 'example_xcom', 'example_trigger_controller_dag', 'latest_only_with_trigger', 'datablocks_dag']) retrieved from /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py
[2017-07-11 21:32:07,083] {models.py:3529} DagFileProcessor0 INFO - Creating ORM DAG for datablocks_dag
[2017-07-11 21:32:07,234] {models.py:331} DagFileProcessor0 INFO - Finding 'running' jobs without a recent heartbeat
[2017-07-11 21:32:07,234] {models.py:337} DagFileProcessor0 INFO - Failing jobs without heartbeat after 2017-07-11 21:27:07.234388
[2017-07-11 21:32:07,240] {jobs.py:351} DagFileProcessor0 INFO - Processing /home/alex/Desktop/datablocks/tests/.airflow/dags/datablocks_dag.py took 1.881 seconds
可能是什么导致了这个问题?
我是不是误解了start_date
的运作方式?
或者日志文件中看似令人担忧的 schedule_interval
WARNING
行是否可能是问题的根源?
问题是 dag 暂停了。
在您提供的屏幕截图中,在左上角,将其翻转到 On
即可。
这是开始使用气流时的常见问题 "gotcha"。
接受的答案是正确的。这个问题可以通过 UI 来处理。
另一种处理方法是使用配置。
默认情况下,所有 dag 都在创建时暂停。
您可以在 airflow.cfg
# Are DAGs paused by default at creation
dags_are_paused_at_creation = True
打开标志将在下一次心跳后启动您的 dag。
相关gitissue
我有同样的问题,但它必须与 depends_on_past 或 wait_for_downstream