【发布时间】:2021-07-04 05:49:50
【问题描述】:
我需要从 Ariflow dag 调用 API。
以下是我在代码中使用的示例 json_string:
def api_call_func(**context):
source_file_name = context["dag_run"].conf["source_file_names"]
json_data = { "filenames":[
{"FileName":[f'Source_credit_{{{{ ts_nodash }}}}']}
]
}
json_string = json.dumps(json_data,
skipkeys = True,
allow_nan = True)
requests.post(url = API_URL, data = json_string)
api_task = PythonOperator(
task_id='api_task',
provide_context=True,
python_callable=api_call_func,
dag=dag,
)
但它会导致以下响应:
<filenames>
<FileName>f'Source_credit_{{ ts_nodash }}</FileName>
</filenames>
以下是 currentDateTime 所需的响应:
<filenames>
<FileName>f'Source_credit_20210408010223</FileName>
</filenames>
如何在 json 中传递 ts_nodash 宏? 或者如何在 json 中传递 dag 的执行日期时间?
【问题讨论】:
-
你到底是如何使用
json_str的?仅当包含模板的字符串作为参数传递给运算符的模板化参数时,才会处理模板。例如,PythonOperator的op_args参数。 -
如前所述,Airflow 定义了哪些参数可以模板化或不模板化,它在很大程度上取决于特定的运营商实现。您能否与我们分享一些代码行以正确理解这一点?
-
请找到添加的代码行。希望它可以帮助@Nick_Kh
-
我添加了代码行,显示了如何使用 json_str。请帮助@SergiyKolesnikov
标签: python json google-cloud-platform airflow airflow-api