我正在尝试使用气流来定义我想从命令行手动触发的特定工作流.
我创建了DAG并添加了一堆任务.
dag = airflow.DAG(
"DAG_NAME",
start_date=datetime(2015, 1, 1),
schedule_interval=None,
default_args=args)
Run Code Online (Sandbox Code Playgroud)
然后我在终端跑
airflow trigger_dag DAG_NAME
Run Code Online (Sandbox Code Playgroud)
没有任何反应.调度程序正在另一个线程中运行.任何方向都非常感谢.谢谢
小智 31
我刚遇到同样的问题.
假设您能够airflow list_dags通过Web服务器或通过Web服务器看到您的dag :
我不仅要在Web UI中打开dag,而且还必须确保它airflow scheduler作为一个单独的进程运行.
一旦我运行了调度程序,我就能够成功执行我的dag airflow trigger_dag <dag_id>
我的dag配置与你的没有明显不同.我也有schedule_interval=None
您可能已禁用工作流程.手动启用工作流程.打开气流Web服务器
$ airflow webserver -p 8080
Run Code Online (Sandbox Code Playgroud)
转到http:// localhost:8080.您应该看到所有可用的dag列表,其中有一个开关按钮.默认情况下,一切都设置为关闭.搜索您的dag并切换您的工作流程.现在尝试从终端触发工作流程.它现在应该工作.
首先确保气流上的数据库连接字符串正常工作,并在postgres,sqlite(默认情况下)或任何其他数据库上运行。然后运行命令
airflow initdb
Run Code Online (Sandbox Code Playgroud)
此命令不应显示任何连接错误
其次,确保您的网络服务器在单独的线程上运行
airflow webserver
Run Code Online (Sandbox Code Playgroud)
然后在其他线程上运行schdeuler
airflow scheduler
Run Code Online (Sandbox Code Playgroud)
调度程序运行后,最终在另一个线程上触发dag
airflow trigger_dag dag_id
Run Code Online (Sandbox Code Playgroud)
另外,请确保dag和任务列表中存在dag名称和任务
airflow list_dags
airflow list_tasks dag_id
Run Code Online (Sandbox Code Playgroud)
并且如果在用户界面中关闭了dag,则将其打开。