Skip to content
This repository was archived by the owner on Aug 19, 2025. It is now read-only.
This repository was archived by the owner on Aug 19, 2025. It is now read-only.

KeyError triggered by ConnectionError: Connection closed by server. #142

@JoseKilo

Description

@JoseKilo

Hi maintainers, thank you for the package !

This line can fail with a ConnectionError, at least when using the Redis backend, possibly others too:

await self._backend.subscribe(channel)

When that happens, queue is never added to self._subscribers[channel].

But the finally block will try to remove it nonetheless, causing a KeyError and hiding the original issue:

self._subscribers[channel].remove(queue)

Possible solutions:

  • Using discard instead of remove
  • maybe moving the _backend.subscribe call outside the try block: when that call fails you can probably skip self._backend.unsubscribe. You'd still need to put a None in the queue though.

I could prepare a PR with any of those if they make sense.

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