【问题标题】: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】:

      尽量避免错误。如果您声明与队列的连接,但它不存在,则会创建它。然后立即删除它。

      或者,如果您将在下周左右再次使用该队列,即它不是一次性使用的,那么只需将其保留并作为系统管理员活动处理删除,以清理长期空闲队列。

      或者只是使用自动删除属性声明您的队列,当您断开连接时它们会消失。

      【讨论】:

        猜你喜欢
        • 2020-10-01
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 2015-05-31
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多