我有一个气流dag,有一个bash操作符,什么都不做

dag = DAG(
    "test",
    default_args={
        "owner": "...",
        "start_date": datetime.combine(datetime.today() - timedelta(1), datetime.min.time()),
        "retry_delay": timedelta(minutes=1),
        "email": "...",
        "queue": ...
    },
    schedule_interval="*/5 * * * *",
    max_active_runs=1
)

BashEx(
    task_id="my_task",
    s3_files=[],
    bash_command="echo test",
    dag=dag
)

当我从web-ui触发它时它失败并且日志为空:在 Log by attempts 下面有一个空白页面 . startedduration 的值是 none

如果我从cli运行相同的dag,或者由调度程序触发它,或者如果我通过填充表单创建一个新的“dag run”,它就会成功 .

只有当我单击触发新运行的播放按钮时才会出现此问题 .

是什么导致这种情况?

我正在使用带有CeleryExecutor的airflow 1.9.0

edit

  • 这只发生在某些队列上,如果我使用队列A,在同一台机器上有一个 Worker (在不同的docker容器上)没有问题 . 在队列B上,有一个工作人员在EMR上运行(aws)我遇到了这个问题 .

  • 我查看了 Worker 的日志,得到了这样的东西:

这是我从播放按钮触发的失败运行

INFO - 在Celery中执行命令:airflow run python_sample python_sample 2018-03-21T14:35:34.123647 --local -sd /var/lib/airflow/dags/python_sample.py ... 错误 - 命令'气流运行python_sample python_sample 2018-03-21T14:35:34.123647 --local -sd /var/lib/airflow/dags/python_sample.py'返回非零退出状态1

从我从dagRun表单触发任务时,这是一次成功的运行

INFO - 在Celery中执行命令:airflow run python_sample python_sample 2018-03-21T14:37:09 --local -sd /var/lib/airflow/dags/python_sample.py ... INFO - 正在运行:['bash',' - c',u'airflow运行python_sample python_sample 2018-03-21T14:37:09 --job_id 8279 --raw -sd DAGS_FOLDER / python_sample.py']

到目前为止,我最好的猜测是,当web-ui以 2018-03-21T14:35:34.123647 的格式开始日期时,工作人员无法处理它,而不是所有其他类型的触发器都接收到的更简洁的 2018-03-21T14:35:34 ,但我不知道知道如何以不同方式配置它