Skip to content

Notifiers when runing airflow dags locally though tests #64649

@johnhoran

Description

@johnhoran

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:corekind:bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yet

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions