[英]How can I pass Jinja2 templated parameter to a task using the Taskflow API?
如果我將其傳遞為"{{ var.json.my_api_key.api_key }}"
,我有一個任務無法正確呈現其參數之一:
@task
def generate_signature_headers(api_key="{{ var.json.knmi_api_key.api_key }}",
hmac_secret_key="{{ var.json.knmi_api_key.hmac_secret_key }}".encode('utf-8')):
hmac_digest_transformed = ...some code..
return {
"Date": now_utc,
"Authorization": f'Signature keyId="{api_key}",algorithm="hmac-sha512",'
f'signature="{hmac_digest_transformed}" ',
}
api_key 參數作為字符串"{{ var.json.knmi_api_key.api_key }}"
返回而不被渲染,但hmac_secret_key可以按預期工作。
如果我將 api_key 參數作為Variable.get('knmi_api_key', deserialize_json=True)['api_key']
傳遞,那么一切正常,但是這樣做,每次解析 dag 時都會創建到元存儲數據庫的連接。
如何使用 Jinja2 模板引擎傳遞參數?
您不需要在 @task 修飾函數中將參數作為 jinja 模板傳遞。 而不是您將context
字段作為 kwarg 參數傳遞給它。 所以這樣的事情應該有效:
@task
def generate_signature_headers(var):
api_key = var.json.kmi_api_key.api_key
hmac_secret_key = var.json.kmi_api_key.hmac_secret_key
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.