簡體   English   中英

如何使用任務流 API 將 Jinja2 模板化參數傳遞給任務?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM