在网页应用中使用Pika BlockingConnection可以吗?

6 投票
1 回答
1984 浏览
提问于 2025-04-18 15:25

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

谢谢。

1 个回答

8

每个线程都需要有一个 BlockingConnection 对象,这在 pika 的常见问题解答 中有说明:

Pika 的代码中没有线程的概念。如果你想在多线程环境中使用 Pika,确保每个线程都有一个 Pika 连接,并且这个连接是在该线程中创建的。跨线程共享一个 Pika 连接是不安全的。

所以,答案取决于你是如何部署 Django 的。如果你在多线程环境中使用 Django,就不能使用一个全局的 BlockingConnection; 你需要为每个线程创建一个。如果你不使用多线程,那么可以使用一个全局的 BlockingConnection 对象。

撰写回答