Airflow - BashOperator:获取“DAG运行因DAG而死锁:...”错误

时间:2016-11-30 21:25:33

标签: python concurrency workflow airflow

真的很喜欢Airflow工作流程调度程序,但是在运行简单DAG时遇到错误:“ {jobs.py:538} ERROR - DAG运行因DAG而死锁:TEST_SCHEDULER_DAG ”。

这是一个新的气流安装(v1.7.1.3),我已经能够运行其他预定的dag文件了。我的环境是Linux(ubuntu 16.04),python 2.7.12(anaconda),postgresql 9.5.5,以及使用LocalExecutor。

DAG我遇到了死锁错误:

from airflow import DAG
from airflow.operators import BashOperator
from datetime import datetime, timedelta

default_args = {
    'owner': 'owner.name',
    'depends_on_past': True,
    'start_date': datetime(2016, 11, 30, 8, 0, 0),
    'retries': 0,
    'retry_delay': timedelta(seconds=60),
}

tst_dag = DAG(dag_id='TEST_SCHEDULER_DAG',
              default_args=default_args,
              schedule_interval='10 * * * *')

t1 = BashOperator(
    task_id='task_1',
    bash_command='sleep 10',
    dag=tst_dag)

t2 = BashOperator(
    task_id='task_2',
    bash_command='sleep 10',                  
    dag=tst_dag)

t2.set_upstream(t1)

同样,第一次执行运行正常,但所有后续执行(DagRun)显示为'failed',我在控制台上看到'deadlock'错误。

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试从dag_run表中删除dags条目并在此之后重新启动调度程序。

答案 1 :(得分:0)

@Gergely的回复帮助了我。我试图运行气流回填的日期超过了DAG上指定的end_date。一旦我将DAG对象的end_date更改为包括我回填的日期,就可以使用。

答案 2 :(得分:0)

尝试删除数据库中状态为“正在运行”的dagrun表行。

然后'airflow backfil -s -e --reset_dagruns。