Skip to content

When using daphne, if some process is already listening on our preferred port, runserver does not exit with a failure code. #577

@offby1

Description

@offby1

if some server process is already listening on our preferred port, runserver does not exit with a failure code, but instead keeps running (even though the underlying daphne process has logged an error complaining about EADDRINUSE).

To reproduce the problem:

  • clone the "repro-daphne-trouble" repository, and cd to its top-level directory (i.e., the folder that holds README.md)
  • install uv
  • run uv run python manage.py runserver; note that it's working fine
  • in another window, again run uv run python manage.py runserver. This time, you'll see Listen failure: Couldn't listen on 127.0.0.1:8000: [Errno 48] Address already in use., but the process doesn't exit. The "Listen failure" message is expected, but the bug is that the process should exit with a nonzero status.

Notes:

  • If, instead of uv run python manage.py runserver, you run uv run daphne repro.asgi:application (which is roughly equivalent), it works fine: the first process starts, and the second one both reports 2026-02-08 21:32:24,523 CRITICAL Listen failure: Couldn't listen on 127.0.0.1:8000: [Errno 48] Address already in use. and exits with status 1.
  • If you check out the latest commit before adding daphne and try running two copies of "runserver", they work fine (i.e., the second process exits with a status of 1). So the problem is in some interaction with "runserver" and "daphne".
  • There was a similar-seeming bug in daphne (Exits with 0, instead of nonzero, when it cannot bind to the specified port #552) that might have caused a similar problem, but it's irrelevant since it's been fixed for at least a year.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions