气流宏可以传递给GKEPod操作员参数吗?

时间:2019-07-03 19:40:22

标签: jinja2 google-kubernetes-engine airflow

我正在尝试找出气流中是否有一种有用的方法来将执行日期通过dag传递给GKEPodOperator参数。

这是我的代码:

with DAG(
    DAG_NAME,
    default_args=default_args,
) as dag:


    end_date = '{{ ds }}'
    start_date = '{{ (ds - macros.timedelta(days=1)).strftime("%Y-%m-%d") }}'

    playlog_to_gcs = GKEPodOperator(
        task_id=f"test",
        project_id=PROJECT,
        location=LOCATION,
        cluster_name=CLUSTER_NAME,
        namespace="default",
        image=f"gcr.io/{PROJECT}/test",
        name=f"{DAG_NAME}",
        get_logs=True,
        # I would like to be able to use macros with strings to pass to parameters in operators such as this
        env_vars={
            "TARGET_PATH": f"test/test-{end_date}.csv",
        },
    )

但是,TARGET_PATH最终导致 测试/测试-{{ds}}。csv

1 个答案:

答案 0 :(得分:0)

Jinja2在所有模板化字段中评估模板,这些字段在操作符类中进行了描述。就您而言,它发生在这里: https://github.com/apache/airflow/blob/2bdb053db618de7064b527e6e3ebe29f220d857b/airflow/contrib/operators/gcp_container_operator.py#L228

在这里: https://github.com/apache/airflow/blob/2bdb053db618de7064b527e6e3ebe29f220d857b/airflow/contrib/operators/kubernetes_pod_operator.py#L102

env_vars确实是模板字段,因此它应该可以工作。 我认为您应该尝试:“ test / test-{{end_date}}。csv”