Haga macros de Airflow personalizadas para expandir otras macros
¿Hay alguna manera de hacer una macro definida por el usuario en Airflow que se calcule a partir de otras macros?
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,
)
El caso de uso aquí es hacer un puerto posterior del nuevo Airflow v1.8next_execution_date
macro para trabajar en Airflow v1.7. Desafortunadamente, esta plantilla se representa sin expansión de macro:
$ airflow render simple bash_op 2017-08-09 21:00:00
# ----------------------------------------------------------
# property: bash_command
# ----------------------------------------------------------
echo "{{ dag.following_schedule(execution_date) }}"