【问题标题】:amqp queue_delete catch errors in async wayamqp queue_delete 以异步方式捕获错误
【发布时间】:2011-03-14 18:23:55
【问题描述】:
我刚刚开始在 Tornado 中使用 pika(v 0.9.4)(通过使用 pika.adapters.tornado_connection.TornadoConnection),我想知道在使用时捕捉错误的适当方法是什么,比如:queue_delete for when the您尝试删除的队列不存在。 RabbitMQ 引发 AMQPError,但我不确定如何以异步方式处理。
有人对此有任何见解吗?
【问题讨论】:
标签:
python
rabbitmq
amqp
tornado
【解决方案1】:
免责声明:我是stormed-amqp的作者
我建议尝试stormed-amqp
import logging
logging.basicConfig()
from tornado.ioloop import IOLoop
from stormed import Connection
def on_connect():
ch = conn.channel()
ch.queue_declare(queue='hello', durable=False)
ch.queue_declare(queue='hello', durable=True)
def on_error(e):
print "Got Connection error", e.reply_text, e.reply_code
io_loop.stop()
conn = Connection(host='localhost')
conn.on_error = on_error
conn.connect(on_connect)
io_loop = IOLoop.instance()
io_loop.start()
【解决方案2】:
尽量避免错误。如果您声明与队列的连接,但它不存在,则会创建它。然后立即删除它。
或者,如果您将在下周左右再次使用该队列,即它不是一次性使用的,那么只需将其保留并作为系统管理员活动处理删除,以清理长期空闲队列。
或者只是使用自动删除属性声明您的队列,当您断开连接时它们会消失。