Python 3.6: Как создать потребителя pika с помощью адаптера SelectConnection без использования класса?

Я новичок в Python и Pika, и я сталкиваюсь с проблемами, потребляющими из очереди, используя адаптер BlockingConnection, который продолжает выдавать исключение через несколько часов.

Поэтому я сейчас пытаюсь использовать адаптер SelectConnection (Asynchronous), но я могу найти только примеры, которые используют этот тип адаптера в классе, и работа с кодом на основе классов в настоящее время немного выходит за рамки моего понимания.

Я нашел пример, который показывает, как создать производителя, используя SelectConnection, но я не могу найти пример для потребителя, который бесит меня, потому что я бы подумал, что на сайте pika будут представлены как основной производитель, так и потребитель, а не просто производитель...

Код производителя приведен ниже и взят с веб-сайта pika (почему я не включил пример для базового потребителя, это вне меня...): ( http://pika.readthedocs.io/en/latest/examples/comparing_publishing_sync_async.html)

import pika

# Step #3
def on_open(connection):

    connection.channel(on_channel_open)

# Step #4
def on_channel_open(channel):

    channel.basic_publish('test_exchange',
                            'test_routing_key',
                            'message body value',
                            pika.BasicProperties(content_type='text/plain',
                                                 delivery_mode=1))

    connection.close()

# Step #1: Connect to RabbitMQ
parameters = pika.URLParameters('amqp://guest:guest@localhost:5672/%2F')

connection = pika.SelectConnection(parameters=parameters,
                                   on_open_callback=on_open)

try:

Step #2 - Block on the IOLoop
connection.ioloop.start()

Catch a Keyboard Interrupt to make sure that the connection is closed cleanly
except KeyboardInterrupt:

# Gracefully close the connection
connection.close()

# Start the IOLoop again so Pika can communicate, it will stop on its own when the connection is closed
connection.ioloop.start()

Может ли кто-нибудь посоветовать, как я могу изменить этот код, чтобы он "потреблял", а не "производил", или вы можете указать мне на любые примеры, которые просто используют базовые функции, а не примеры на основе классов, которые я нашел много примеров, но они бесполезны для моей конкретной цели...

Спасибо. (как вы, возможно, поняли из тона моего вопроса, сейчас я немного переживаю, так как сейчас 4 часа утра, и я пытаюсь решить эту проблему часами!)

1 ответ

На случай, если это кому-нибудь поможет, и после того, как он много возится...

http://rabbitpy.readthedocs.io/

Гораздо проще и, кажется, очень быстро...

Другие вопросы по тегам