如何解决pika 中 add_callback_threadsafe() 方法有什么用?
根据 pika
文档中的描述,我不太明白 add_callback_threadsafe()
方法的作用。它说,“在此连接的线程的上下文中尽快请求对给定函数的调用”。具体来说,这个回调与哪个事件相关联?既然 add_callback_threadsafe()
没有收到任何“事件”参数,那么 pika
如何知道何时调用该回调?
另外,在官方的例子中,为什么我们甚至需要构建偏函数并在 do_work() 方法中注册回调?我们不能在 ack_message()
结束后调用 time.sleep()
方法吗?
解决方法
该方法存在的原因: How to add multiprocessing to consumer with pika (RabbitMQ) in python
如果您对多个线程/进程使用相同的兔子连接/通道,那么您很容易崩溃。如果您想避免这种情况,则需要使用该方法。
我们可以不只是在调用之后调用 ack_message() 方法吗? time.sleep() 结束了吗?
不,您会从与主线程不同的线程调用 ack_message,这不是线程安全的并且容易崩溃。您需要从线程安全上下文中调用 ack_message,即 add_callback_threadsafe()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。