Skip to content

dag.test(use_executor=True) doesn't provide the /execution API, but all executors rely on it #59074

@multimeric

Description

@multimeric

Apache Airflow version

main (development)

If "Other Airflow 2/3 version" selected, which one?

No response

What happened?

All executors, even as simple as the LocalExecutor try to send API requests to /execution. I'm not exactly sure which component typically provides this, maybe the API server. However, dag.test(use_executor=True) doesn't run the component that does, so you end up with a lot of '[Errno 61] Connection refused' from trying to call <Request('PATCH', 'http://localhost:8789/execution/task-instances/019aebfb-c04b-77bd-bf3c-4feb705d81ea/run')>.

As a result, I'm not able to run dag.test(use_executor=True). I've had no luck starting an API server separately either. More specifically, if you start the API server before you run dag.test(), the above error goes away, but you instead get the following:

[2025-12-05T01:03:18.586481Z] {taskinstance.py:1543} ERROR - Executor LocalExecutor(parallelism=4) reported that the task instance <TaskInstance: example.extract manual__2025-12-05T01:03:08.304291+00:00 [queued]> finished with state failed, but the task instance's state attribute is queued. Learn more: https://airflow.apache.org/docs/apache-airflow/stable/troubleshooting.html#task-state-changed-externally

I think running a real API server for a test is overkill anyway.

What you think should happen instead?

No response

How to reproduce

Try to run any workflow with dag.test(use_executor=True)

Operating System

macOS 15.6

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

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions