Как добавить тайм-аут к методу start_using() в библиотеке pika

У меня есть BlockingConnection, и я следую примерам документации pika. Но во всех них примерами кода для начала потребления сообщений являются:

connection = pika.BlockingConnection()
channel = connection.channel()
channel.basic_consume('test', on_message)
try:
    channel.start_consuming()
except KeyboardInterrupt:
    channel.stop_consuming()
connection.close()

(с более или менее подробной информацией).

Мне нужно написать много скриптов, и я хочу запускать их один за другим (в целях тестирования/исследования). Но приведенный выше код требует, чтобы я добавил ^C в каждый из них.

Я пытаюсь добавить некоторые тайм-ауты, объясненные в документации, но Мне не повезло. Например, если я найду параметр для установки, если клиент не использует никаких сообщений за последние X секунд, то сценарий завершится. Возможно ли это в pika lib? или я должен изменить подход?


person Tuxman    schedule 12.07.2019    source источник
comment
Вы хотите, чтобы ваш код автоматически убивал потребителя через определенное время. Это правильно?   -  person bumblebee    schedule 12.07.2019
comment
@bumblebee Хорошо, это может быть вариант. Но это время должно быть после того, как больше сообщений в очереди не существует. Например, в клиенте C++ вы можете установить время ожидания.   -  person Tuxman    schedule 12.07.2019


Ответы (1)


Не используйте start_consuming, если вы не хотите, чтобы ваш код блокировался. Либо используйте SelectConnection, либо этот метод, использующий consume. Вы можете добавить тайм-аут к параметрам, переданным в consume.


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

person Luke Bakken    schedule 12.07.2019