Skip to content Skip to sidebar Skip to footer

Running Rabbitmq Pika With Quart

I am using the Quart framework, but I also need to use the RabbitMQ Pika connector, but I can't get them to play nice as they both have infinite loops. Entrypoint: from quart impor

Solution 1:

Pika is not thread safe as you have already spotted but this is not why your program blocks.

Your problem might be here:

print('creating thread')
self._messaging_thread = Thread(target=self.run_consume())
#self._messaging_thread.start()

Does it work better if you remove parentheses from run_consume? Now you are actually not creating a thread but executing self.run_consume() on the spot and it does not exit.

self._messaging_thread = Thread(target=self.run_consume)

would be my first attempt.

However, as Pika is not thread safe, you must also move your channel creation & stuff to your thread instead of doing that in the main program. It might work if you are not using it anywhere else but the correct way with Pika is to contain absolutely everything in the thread and not share any Pika structures between threads as you do now here.

Post a Comment for "Running Rabbitmq Pika With Quart"