rabbitmq pika не берут больше чем одну работу, используя поток - PullRequest
0 голосов
/ 06 февраля 2019

У меня проблема с ConnectionResetError, когда я блокирую IOLoop, который channel.start_consuming() работает в течение длительного времени.Итак, я прочитал этот код:
https://github.com/pika/pika/blob/0.12.0/examples/basic_consumer_threaded.py
В этом коде задание выполняется в фоновом потоке.

Проблема заключается в том, что когда задание выполняется в потоке, работниквсе еще может занять больше заданий (т.е. получать обратные вызовы on_message).Но я не хочу, чтобы мой работник обрабатывал более одной работы одновременно.
Что мне делать?Можно ли сообщить очереди, что работник «занят» и не может принимать задания в течение некоторого времени?

1 Ответ

0 голосов
/ 06 февраля 2019

Пока вы устанавливаете значение QoS канала с помощью метода channel.basic_qos, ваш потребитель не будет получать больше неподтвержденных сообщений, чем указано в prefetch_count.

Если вы используетеВ аргументе prefetch_count=1 ваш потребитель будет получать только одно сообщение за раз и не будет получать больше, пока для этого сообщения не будет вызван basic_ack.

Если по какой-то причине вы видите что-то другое, поделитесь всего вашего кода в виде вложения или ссылки в сообщении в списке рассылки pika-python, и я проверю его.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы по StackOverflow.

...