【发布时间】:2018-03-27 18:24:28
【问题描述】:
我有一个尝试与 python 守护进程通信的 python 脚本。当调用原始脚本时,它会检查守护进程是否存在。如果守护进程存在,原始脚本将写入命名管道以与守护进程通信。 如果守护进程不存在,原始脚本会尝试使用 DaemonContext 创建守护进程,然后写入命名管道。
原脚本伪代码:
from daemon import DaemonContext
if daemon_exists():
pass
else:
with DaemonContext():
create_daemon()
communicate_with_daemon()
问题是当守护进程被创建时,父进程被杀死(即,communication_with_daemon 永远不会被执行)。这可以防止原始脚本创建守护程序并与其通信。
根据this answer,这个问题是python-daemon库的限制。我该如何解决这个问题?
谢谢。
【问题讨论】:
-
守护进程是双重分叉和关闭与终端的连接。你可以自己实现它,但我不推荐它。为什么不编写一个单独的客户端进程来处理守护进程通信?
-
是的,这似乎是避免该问题的最明智的方法。谢谢!
-
@Keozon 你能发表你的评论作为答案吗?谢谢!
标签: python daemon python-daemon