我已经在Airflow上工作了一段时间,调度程序没有问题,但是现在遇到了问题。
基本上,我已经准备好脚本并准备好执行任务,但是该任务不会定期运行。相反,它需要在随机时间激活。 (外部各方会告诉我们现在是时候了,我们将运行它。在接下来的几个月中,这可能会发生很多次。)
反正有手动触发dag吗?也欢迎任何其他方向/建议。 谢谢。
答案 0 :(得分:1)
您在这里有很多选择:
airflow trigger_dag <dag_id>
,请参阅https://airflow.apache.org/docs/stable/cli.html#trigger_dag中的文档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/stable/_api/airflow/operators/dagrun_operator/index.html#airflow.operators.dagrun_operator.TriggerDagRunOperator中的文档以及https://github.com/apache/airflow/blob/1.10.6/airflow/example_dags/example_trigger_controller_dag.py中的示例。如果这真的是100%手动的,那么您可能会使用UI或CLI。如果您希望让外部用户自己间接触发它,则可以选择API或操作员。请记住在DAG上设置schedule_interval=None
。
答案 1 :(得分:0)
气流有API。您需要的方法是POST /api/experimental/dags/<DAG_ID>/dag_runs
。使用此方法,您还可以为dag运行传递配置参数。
我们使用Jenkins手动触发dags。如果您使用的是Jenkins,则可以检查our jenkins pipeine library。
答案 2 :(得分:0)
因此,可以通过以下方式触发dag:
使用REST API参考(see documentation)
端点-
> POST /api/experimental/dags/<DAG_ID>/dag_runs
使用卷发:
curl -X POST
http:// localhost:8080 / api / experimental / dags // dag_runs
-H'缓存控制:无缓存'
-H'内容类型:application / json'
-d'{“ conf”:“ {” key“:” value“}”}'
使用Python请求:
import requests response = requests.post(url, data=json.dumps(data), headers=headers)
使用@Daniel提到的UI中存在的触发器DAG选项