From 9f4dfb9781847bed6077d49e931719c04460e88c Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Thu, 24 Mar 2022 10:42:21 +0100 Subject: [PATCH] channel and connection closing experimenting --- .../queue/queue_manager/pika_queue_manager.py | 7 +++-- pyinfra/test/unit_tests/conftest.py | 26 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/pyinfra/queue/queue_manager/pika_queue_manager.py b/pyinfra/queue/queue_manager/pika_queue_manager.py index 5544a10..7e80040 100644 --- a/pyinfra/queue/queue_manager/pika_queue_manager.py +++ b/pyinfra/queue/queue_manager/pika_queue_manager.py @@ -129,8 +129,11 @@ class PikaQueueManager(QueueManager): self.publish_response(message, visitor) def clear(self): - self.channel.queue_purge(self._input_queue) - self.channel.queue_purge(self._output_queue) + try: + self.channel.queue_purge(self._input_queue) + self.channel.queue_purge(self._output_queue) + except pika.exceptions.ChannelWrongStateError: + pass @property def input_queue(self) -> QueueHandle: diff --git a/pyinfra/test/unit_tests/conftest.py b/pyinfra/test/unit_tests/conftest.py index a0296ea..9eab856 100644 --- a/pyinfra/test/unit_tests/conftest.py +++ b/pyinfra/test/unit_tests/conftest.py @@ -123,18 +123,24 @@ def get_queue_manager(queue_manager_name) -> QueueManager: @pytest.fixture(scope="session") def queue_manager(queue_manager_name): + def close_connections(): + if queue_manager_name == "pika": + try: + queue_manager.connection.close() + except (pika.exceptions.StreamLostError, pika.exceptions.ConnectionWrongStateError, ConnectionResetError): + logger.debug("Connection was already closed when attempting to close explicitly.") + + def close_channel(): + if queue_manager_name == "pika": + try: + queue_manager.channel.close() + except pika.exceptions.ChannelWrongStateError: + logger.debug("Channel was already closed when attempting to close explicitly.") + queue_manager = get_queue_manager(queue_manager_name) yield queue_manager - if queue_manager_name == "pika": - # try: - queue_manager.connection.close() - # except (pika.exceptions.StreamLostError, ConnectionResetError): - # pass - try: - queue_manager.channel.close() - except pika.exceptions.ChannelWrongStateError: - logger.debug("Channel was already closed when attempting to close explicitly.") - pass + close_connections() + close_channel() @pytest.fixture(scope="session")