Providing Context In TriggerDagRunOperator
I have a dag that has been triggered by another dag. I have passed through to this dag some configuration variables via the DagRunOrder().payload dictionary in the same way the off
Solution 1:
Solved:
The dag_run
object is stored in the context and so the configuration variables can be accessed in the python_callable
of the TriggerDagRunOperator
with this pattern:
def trigger(context, dag_run_obj):
dag_run_obj.payload = {
"message": context["dag_run"].conf["message"],
"day": context["dag_run"].conf["day"]
}
return dag_run_obj
trigger_step = TriggerDagRunOperator(
task_id="trigger_modelling",
trigger_dag_id="Dummy_Modelling",
python_callable=trigger,
dag=dag
)
Solution 2:
In Airflow2.0.x
, the equivalent of @efbbrown
's answer is:
from airflow.operators.trigger_dagrun import TriggerDagRunOperator
trigger_step = TriggerDagRunOperator(
task_id="trigger_modelling",
trigger_dag_id="Dummy_Modelling",
conf={"message": "{{ dag_run.conf['message'] }}", "day":"{{
dag_run.conf['day'] }}"},
dag=dag
)
The pull request is described here on GitHub.
See the documentation for external-triggers and for trigger_dagrun.
Here is a YouTube video on the topic that shows the correct imports.
Solution 3:
@efbbrown Yes either you can do that or whenever you access first dags params push it to xcom and pull it while triggering second dag
Post a Comment for "Providing Context In TriggerDagRunOperator"