gpt4 book ai didi

python - 我可以在守护进程中运行 pika 的 connection.ioloop.start() 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:40 25 4
gpt4 key购买 nike

我正在尝试设置一个工作守护进程来处理来自 rabbitmq 的消息。我正在使用 pika 及其 SelectConnection。如果我不将它作为守护进程运行,代码可以正常工作。我可以用

py worker.py

py worker.py &

成功了。但是,当我添加

import daemon
with daemon.DaemonContext():
connection.ioloop.start()

to worker.py,该代码虽然不会引发任何异常,但会停止从队列中获取消息并最大化我的 CPU 利用率。 worker.py 看起来很像 this示例。

谢谢。

最佳答案

首先,我不知道你从哪里得到这个守护进程模块,但我注意到你在你的示例中import 守护进程而不是 pika。

import daemon
with daemon.DaemonContext():
import pika
# any additional pika code here, maybe the creation of connection?
connection.ioloop.start()

我强烈怀疑你在将进程变成守护进程之前使用了 pika(甚至 import 在模块内部执行代码)。这意味着您在 RAM 中拥有在守护程序 fork 时复制的资源,如果此守护程序模块做正确的事情,那么在此过程中将强制关闭任何打开的套接字或文件。

最好不要有任何生命周期跨越守护进程边界的对象。让守护进程完全独立于任何其他处理运行,并让它们通过消息传递(例如 AMQP 或 0MQ)与其他进程通信。

关于python - 我可以在守护进程中运行 pika 的 connection.ioloop.start() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com