我正在尝试使用气流来定义我想从命令行手动触发的特定工作流程。
我创建了DAG并添加了一堆任务。
dag = airflow.DAG(
"DAG_NAME",
start_date=datetime(2015, 1, 1),
schedule_interval=None,
default_args=args)
然后我在终端
中运行airflow trigger_dag DAG_NAME
没有任何反应。调度程序正在另一个线程中运行。任何方向都非常感谢。谢谢
答案 0 :(得分:29)
我刚遇到同样的问题。
假设您能够在airflow list_dags
或通过网络服务器查看您的dag,那么:
我不仅要在网络用户界面中打开dag,而且还必须确保airflow scheduler
作为单独的进程运行。
运行调度程序后,我能够使用airflow trigger_dag <dag_id>
我的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