在网络应用程序中使用Pika BlockingConnection是否可以?

Use*_*ser 6 python django rabbitmq pika blockingcollection

我有点困惑BlockingConnectionAsyncoreConnection.我想从Django应用程序向RabbitMQ队列发送一些消息.使用全局BlockingConnection对象可以吗?

谢谢.

dan*_*ano 8

BlockingConnection每个线程需要一个对象,如pika FAQ中所述:

Pika在代码中没有任何线程概念.如果要将Pika与线程一起使用,请确保在该线程中创建每个线程的Pika连接.跨线程共享一个Pika连接是不安全的.

所以,答案取决于你如何部署Django.如果您在多线程部署中使用Django,则无法使用全局BlockingConnection; 你需要创建一个每个线程.如果您不使用多线程,则可以使用全局BlockingConnection对象.

  • @User我认为通过这些设置,您将获得8个单线程进程,因此您应该能够使用全局`BlockingConnection`.使用"SelectConnection"是没有意义的,因为您没有在应用程序中使用事件循环.另外,由于您只是使用`BlockingConnection`来发布消息(而不是使用它们),因此您不应该长时间阻止RabbitMQ调用. (2认同)