import json from multiprocessing import Process from time import sleep from kn_utils.logging import logger from pyinfra.config import get_config from pyinfra.queue.development_queue_manager import DevelopmentQueueManager from pyinfra.queue.queue_manager import QueueManager, QueueManagerV2 def callback(x): sleep(4) response = json.dumps({"status": "success"}).encode("utf-8") return response class TestQueueManager: def test_basic_functionality(self, settings): message = { "targetFilePath": "test/target.json.gz", "responseFilePath": "test/response.json.gz", } queue_manager = QueueManagerV2() # queue_manager_old = QueueManager(get_config()) queue_manager.publish_message(message) queue_manager.publish_message(message) queue_manager.publish_message(message) logger.info("Published message") # consume = lambda: queue_manager.start_consuming(callback) consume = lambda: queue_manager.start_consuming(callback) p = Process(target=consume) p.start() wait_time = 20 # logger.info(f"Waiting {wait_time} seconds for the consumer to process the message...") sleep(wait_time) p.kill() response = queue_manager.get_message() logger.info(f"Response: {response}") print(response)