从终端触发气流DAG不工作

时间:2016-05-05 01:45:38

标签: python airflow

我正在尝试使用气流来定义我想从命令行手动触发的特定工作流程。

我创建了DAG并添加了一堆任务。

dag = airflow.DAG(
    "DAG_NAME",
    start_date=datetime(2015, 1, 1),
    schedule_interval=None,
    default_args=args)

然后我在终端

中运行
airflow trigger_dag DAG_NAME

没有任何反应。调度程序正在另一个线程中运行。任何方向都非常感谢。谢谢

5 个答案:

答案 0 :(得分:29)

我刚遇到同样的问题。

假设您能够在airflow list_dags或通过网络服务器查看您的dag,那么:

我不仅要在网络用户界面中打开dag,而且还必须确保airflow scheduler作为单独的进程运行。

运行调度程序后,我能够使用airflow trigger_dag <dag_id>

成功执行我的dag

我的dag配置与您的没有显着差异。我也有schedule_interval=None

答案 1 :(得分:8)

您可能已停用工作流程。 手动启用工作流程。

打开气流网络服务器
$ airflow webserver -p 8080

转到http://localhost:8080。您应该看到所有可用的dag列表,其中有一个开关按钮。默认情况下,一切都设置为关闭。搜索您的dag并切换您的工作流程。现在尝试从终端触发工作流程。它现在应该工作。

答案 2 :(得分:4)

首先确保气流上的数据库连接字符串正常工作,将其置于postgres,sqlite(默认情况下)或任何其他数据库上。然后运行命令

 airflow initdb

此命令不应显示任何连接错误

其次确保您的网络服务器在单独的线程上运行

airflow webserver

然后在不同的线程上运行你的schdeuler

airflow scheduler

最后在调度程序运行后在另一个线程上触发你的dag

airflow trigger_dag dag_id

还要确保dag和任务列表中存在dag名称和任务

airflow list_dags
airflow list_tasks dag_id

如果您的用户界面中的dag已关闭,请将其切换为开启状态。

答案 3 :(得分:0)

您应该“取消暂停”要触发的拖动。使用airflow unpause xxx_drag,然后使用airflow trigger_dag xxx_drag,它应该可以正常工作。

答案 4 :(得分:-1)

airflow trigger_dag -e