Skip to content

Commit c1b4626

Browse files
committed
Protect receiver shutdown
1 parent 97cd44f commit c1b4626

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

queueio/pika/receiver.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ def __init__(
2727
self.__prefetch = 0
2828
self.__adjust_prefetch(+queuespec.concurrency)
2929

30+
self.__shutdown_lock = Lock()
31+
self.__shutdown = False
32+
3033
for queue in queuespec.queues:
3134
result = self.__channel.consume(queue)
3235
self.__consumer_tag[queue] = cast(str, result.method.consumer_tag)
@@ -68,5 +71,10 @@ def finish(self, message: Message, /):
6871
self.__channel.ack(delivery_tag=self.__tag.pop(message))
6972

7073
def shutdown(self):
71-
for consumer_tag in self.__consumer_tag.values():
72-
self.__channel.cancel(consumer_tag=consumer_tag)
74+
with self.__shutdown_lock:
75+
if self.__shutdown:
76+
return
77+
self.__shutdown = True
78+
79+
for consumer_tag in self.__consumer_tag.values():
80+
self.__channel.cancel(consumer_tag=consumer_tag)

0 commit comments

Comments
 (0)