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.
Hi maintainers, thank you for the package !
This line can fail with a
ConnectionError, at least when using the Redis backend, possibly others too:broadcaster/broadcaster/_base.py
Line 95 in 69cf29a
When that happens,
queueis never added toself._subscribers[channel].But the
finallyblock will try to remove it nonetheless, causing aKeyErrorand hiding the original issue:broadcaster/broadcaster/_base.py
Line 102 in 69cf29a
Possible solutions:
discardinstead ofremove_backend.subscribecall outside thetryblock: when that call fails you can probably skipself._backend.unsubscribe. You'd still need to put aNonein the queue though.I could prepare a PR with any of those if they make sense.