1

我是 python 和 pika 的新手,我遇到了使用 BlockingConnection 适配器从队列中消费的问题,该适配器在几个小时后不断抛出异常。

因此,我现在尝试使用 SelectConnection(异步)适配器,但我只能找到在类中使用此适配器类型的示例,并且使用基于类的代码目前有点超出我的理解。

我确实找到了一个示例,该示例显示了如何使用 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 点有点压力,我一直在努力解决这个问题好几个小时!)

4

1 回答 1

2

以防万一这对其他人有帮助,并且经过很多麻烦...

http://rabbitpy.readthedocs.io

简单得多,看起来非常快......

于 2017-08-23T11:11:00.377 回答