yuqian90 commented on issue #13827:
URL: https://github.com/apache/airflow/issues/13827#issuecomment-774104828
Tried to discuss this on slack in #airflow-2-0. One possible workaround at
the moment is to use `AirflowPlugin` instead of `user_defined_macros`.
`AirflowPlugin` works fine in the webserver so jinja templates can be rendered
just fine. The only downside is that macros are more cumbersome to use in jinja
templates. E.g. with `user_defined_macros`, we could do `{{
next_holiday(execution_date) }}`. But with `AirflowPlugin`, we have to write
`{{ macros.my_plugin.next_holiday(execution_date) }}`.
@kaxil suggested the following small change to `dag.clear()` which should
make `ExternalTaskMarker` that have already run play well with `dag.clear()`
because `get_rendered_template_fields()` reads from the db:
```
diff --git a/airflow/models/dag.py b/airflow/models/dag.py
index 15332f334..30aae0083 100644
--- a/airflow/models/dag.py
+++ b/airflow/models/dag.py
@@ -1260,7 +1260,7 @@ class DAG(LoggingMixin):
max_recursion_depth,
ExternalTaskMarker.__name__, ti.task_id
)
)
- ti.render_templates()
+ ti.get_rendered_template_fields()
external_tis = session.query(TI).filter(
TI.dag_id == task.external_dag_id,
TI.task_id == task.external_task_id,
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]