[英]How to trigger airflow dag manually?
我已经在 Airflow 上工作了一段时间,调度程序没有问题,但现在我遇到了问题。
基本上我有一个脚本和 dag 准备好执行任务,但任务不会定期运行。 相反,它需要在随机时间激活。 (外部各方会告诉我们时间到了,我们会运行它。这可能会在接下来的几个月中发生很多次。)
无论如何手动触发dag? 也欢迎任何其他指示/建议。 谢谢。
您在这里有多种选择:
airflow trigger_dag <dag_id>
,请参阅https://airflow.apache.org/docs/stable/cli.html#trigger_dag 中的文档。 请注意,更高版本的气流使用语法airflow dags trigger <dag_id>
POST /api/experimental/dags/<dag_id>/dag_runs
,请参阅https://airflow.apache.org/docs/stable/api.html#post--api-experimental-dags--DAG_ID- 中的文档-dag_runs 。TriggerDagRunOperator
,请参阅https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/trigger_dagrun/index.html#airflow.operators.trigger_dagrun.TriggerDagRunOperator 中的文档和示例https://github.com/apache/airflow/blob/master/airflow/example_dags/example_trigger_controller_dag.py 。 如果这真的是 100% 手动,您可能会使用 UI 或 CLI。 如果您希望让外部方自己间接触发它,则 API 或 Operator 将是选项。 请记住在 DAG 上设置schedule_interval=None
。
气流有API 。 您需要的方法是POST /api/experimental/dags/<DAG_ID>/dag_runs
。 使用此方法,您还可以为 dag 运行传递配置参数。
我们使用 Jenkins 手动触发 dag。 如果您正在使用 Jenkins,您可以查看我们的 jenkins 管道库。
因此,可以通过以下方式触发 dag:
使用 REST API 参考(请参阅文档)
端点-
> POST /api/experimental/dags/<DAG_ID>/dag_runs
使用卷曲:
curl -X POST
http://localhost:8080/api/experimental/dags/<DAG_ID>/dag_runs
-H '缓存控制:无缓存'
-H '内容类型:应用程序/json'
-d '{"conf":"{"key":"value"}"}'
使用 Python 请求:
import requests response = requests.post(url, data=json.dumps(data), headers=headers)
使用@Daniel 提到的 UI 中存在的触发器 DAG 选项
其他答案给出的示例使用“实验性”API。此 REST API 自 2.0 版以来已弃用。 请考虑使用稳定的 REST API 。
使用方法POST dags/<DAG_ID>/dagRuns 。
curl -X POST 'http://localhost:8080/api/v1/dags/<DAG_ID>/dagRuns' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--user '<user>:<password>' \ # If authentication is used
--data '{}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.