-
Notifications
You must be signed in to change notification settings - Fork 16.8k
Notifiers when runing airflow dags locally though tests #64649
Copy link
Copy link
Open
Labels
area:corekind:bugThis is a clearly a bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yetlabel for new issues that we didn't triage yet
Description
Apache Airflow version
3.1.7
What happened and how to reproduce it?
I am trying to port a Notifier to airflow 3 and ran into an issue when trying to run the code though airflow dags test. I reduced my dag down to
import logging
from datetime import datetime
from airflow import DAG
from airflow.sdk import BaseNotifier, task
class MyNotifier(BaseNotifier):
log = logging.getLogger("MyNotifier")
def notify(self, *args) -> None:
self.log.info("Sending a really lovely message")
@task
def failing_task():
"""This task will intentionally fail."""
raise Exception("This DAG is designed to fail!")
with DAG(
dag_id="bad_dag",
start_date=datetime(2024, 1, 1),
schedule=None,
catchup=False,
tags=["test", "failing"],
on_failure_callback=MyNotifier(),
) as dag:
fail_task = failing_task()And then when I run airflow dags test bad_dag 2025-10-03T08:00:00, the task fails as expected, but then an error is thrown
[2026-04-02T21:35:01.741165Z] {dagrun.py:1453} ERROR - Callback failed for bad_dag
Traceback (most recent call last):
File "/Users/jhoran/Workspace/eda_astronomer/.venv/lib/python3.12/site-packages/airflow/models/dagrun.py", line 1451, in handle_dag_callback
callback(context)
File "/Users/jhoran/Workspace/eda_astronomer/.venv/lib/python3.12/site-packages/airflow/sdk/bases/notifier.py", line 136, in __call__
self.render_template_fields(context)
File "/Users/jhoran/Workspace/eda_astronomer/.venv/lib/python3.12/site-packages/airflow/sdk/bases/notifier.py", line 92, in render_template_fields
jinja_env = self.get_template_env(dag=dag)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jhoran/Workspace/eda_astronomer/.venv/lib/python3.12/site-packages/airflow/sdk/definitions/_internal/templater.py", line 79, in get_template_env
return dag.get_template_env(force_sandboxed=False)
^^^^^^^^^^^^^^^^^^^^
AttributeError: 'SerializedDAG' object has no attribute 'get_template_env'
I tried running the same dag in astronomer, there I didn't see any failure but I also didn't get any log output, so I can only assume it's working there.
What you think should happen instead?
No response
Operating System
No response
Versions of Apache Airflow Providers
No response
Deployment
Virtualenv installation
Deployment details
No response
Anything else?
No response
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:corekind:bugThis is a clearly a bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yetlabel for new issues that we didn't triage yet