encode / broadcaster

Broadcast channels for async web apps. 📢
BSD 3-Clause "New" or "Revised" License
1.13k stars 121 forks source link

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

Open JoseKilo opened 2 months ago

JoseKilo commented 2 months ago

Hi maintainers, thank you for the package !

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

https://github.com/encode/broadcaster/blob/69cf29a41066f53a45498f0dfa36288befd73dd7/broadcaster/_base.py#L95

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:

https://github.com/encode/broadcaster/blob/69cf29a41066f53a45498f0dfa36288befd73dd7/broadcaster/_base.py#L102

Possible solutions:

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