apache/airflow

Notifiers when runing airflow dags locally though tests

Open

#64649 opened on Apr 2, 2026

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Python (44,809 stars) (16,781 forks)batch import
affected_version:3.1area:coregood first issuekind:bug

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

Contributor guide