29

それ自体が他のマクロから計算される Airflow でユーザー定義マクロを作成する方法はありますか?

from airflow import DAG
from airflow.operators.bash_operator import BashOperator

dag = DAG(
    'simple',
    schedule_interval='0 21 * * *',
    user_defined_macros={
        'next_execution_date': '{{ dag.following_schedule(execution_date) }}',
    },
)

task = BashOperator(
    task_id='bash_op',
    bash_command='echo "{{ next_execution_date }}"',
    dag=dag,
)

ここでの使用例は、新しい Airflow v1.8next_execution_dateマクロをバックポートして、Airflow v1.7 で動作するようにすることです。残念ながら、このテンプレートはマクロ展開なしでレンダリングされます。

$ airflow render simple bash_op 2017-08-09 21:00:00
    # ----------------------------------------------------------
    # property: bash_command
    # ----------------------------------------------------------
    echo "{{ dag.following_schedule(execution_date) }}"
4

4 に答える 4