如何在 json 模板中传递气流 ts_nodash
how to pass airflow ts_nodash in a json template
我需要一个来自 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>
以下是当前日期时间所需的响应:
<filenames>
<FileName>f'Source_credit_20210408010223</FileName>
</filenames>
如何在json中传递ts_nodash宏?
或者如何在 json?
中传递 dag 的执行日期时间
仅当包含模板的字符串作为参数传递给运算符的模板化参数时,才会处理模板。例如,op_args
PythonOperator
的参数。
在您的例子中,ts_nodash
的值作为参数由 PythonOperator
传递给 api_call_func()
。因此,您可以使用 context
参数来访问它:
json_data = {
"ID": "A001-001",
"SourceName": sourcefile,
"filenames": [{"FileName": [f"Source_credit_{context['ts_nodash']}"]}],
}
请注意,default variables 其余部分的值可以用相同的方式访问。
我需要一个来自 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>
以下是当前日期时间所需的响应:
<filenames>
<FileName>f'Source_credit_20210408010223</FileName>
</filenames>
如何在json中传递ts_nodash宏? 或者如何在 json?
中传递 dag 的执行日期时间仅当包含模板的字符串作为参数传递给运算符的模板化参数时,才会处理模板。例如,op_args
PythonOperator
的参数。
在您的例子中,ts_nodash
的值作为参数由 PythonOperator
传递给 api_call_func()
。因此,您可以使用 context
参数来访问它:
json_data = {
"ID": "A001-001",
"SourceName": sourcefile,
"filenames": [{"FileName": [f"Source_credit_{context['ts_nodash']}"]}],
}
请注意,default variables 其余部分的值可以用相同的方式访问。