首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Airflow -通过API调用DAG并在大多数方法中传递参数

Airflow -通过API调用DAG并在大多数方法中传递参数
EN

Stack Overflow用户
提问于 2020-07-18 00:55:44
回答 1查看 128关注 0票数 0

我有一个通过airflow API在DAG AIRFLOW中调用python脚本的用例。这个python脚本将通过JSON接收参数。我可以在shell上运行python,它会返回预期的结果。

我的宣传短片如下-

代码语言:javascript
运行
复制
curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/json" http://localhost:8080/api/experimental/dags/DAG-3/dag_runs -d '{"conf":"{\"hostname\":\"<servername>\", \"username\":\"<username>\", \"password\":\"password\", \"command1\":\"hostname\" }"}'

我的DAG如下:

代码语言:javascript
运行
复制
dag = DAG(
    dag_id='DAG-3',
    default_args=default_args,
    dagrun_timeout=timedelta(minutes=10)
    )


#cmd_command = "python3.6 /root/test21.py '{\"hostname\": \"json_data(hostname)\", \"username\":\"json_data(username)\",  \"password\":\"json_data(password)\", \"command1\":\"json_data(command)\"}'"
cmd_command = "python3.6 /root/test21.py '{{ hostname }}' '{{ username }}' '{{ password }}' '{{ command1 }}'"


t = BashOperator(
     task_id = 'execute_script',
     bash_command = cmd_command,
     dag = dag)

通过这个,我看到API POST中的参数没有被选中,我这样做是正确的吗?当我在API中硬编码包被执行时,我不确定如何通过POST将其作为cmd_command传递

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-18 01:47:22

需要通过dag_run.conf访问conf。

代码语言:javascript
运行
复制
cmd_command = "python3.6 /root/test21.py '{{ dag_run.conf.hostname }}' '{{ dag_run.conf.username }}' '{{ dag_run.conf.password }}' '{{ dag_run.conf.command1 }}'"


t = BashOperator(
     task_id = 'execute_script',
     bash_command = cmd_command,
     dag = dag)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62958529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档