【发布时间】:2014-07-30 22:29:58
【问题描述】:
我对@987654321@ 和AsyncoreConnection 有点困惑。我想从 Django 应用程序向 RabbitMQ 队列发送一些消息。使用全局 BlockingConnection 对象可以做到这一点吗?
谢谢。
【问题讨论】:
标签: python django rabbitmq pika blockingcollection
我对@987654321@ 和AsyncoreConnection 有点困惑。我想从 Django 应用程序向 RabbitMQ 队列发送一些消息。使用全局 BlockingConnection 对象可以做到这一点吗?
谢谢。
【问题讨论】:
标签: python django rabbitmq pika blockingcollection
每个线程需要有一个BlockingConnection 对象,如pika FAQ 中所述:
Pika 在代码中没有任何线程概念。如果你想 使用带线程的 Pika,确保每个都有 Pika 连接 线程,在该线程中创建。分享一只鼠兔是不安全的 跨线程连接。
因此,答案取决于您如何部署 Django。如果在多线程部署中使用 Django,则不能使用全局 BlockingConnection;您需要为每个线程创建一个。如果您不使用多线程,则可以使用全局 BlockingConnection 对象。
【讨论】:
enable-threads = true,process = 8。我应该为每个请求创建连接吗?在同步应用程序中使用pika.SelectConnection 是否有意义?
BlockingConnection。使用SelectConnection 没有意义,因为您没有在应用程序中使用事件循环。另外,由于您只是使用BlockingConnection 来发布消息(而不是使用它们),因此您不应该长时间阻塞 RabbitMQ 调用。