问题描述
!!!子流程对我不起作用。
我想将 python 脚本 daemon.py
作为守护进程运行。此脚本需要从另一个名为 starter.py
要求:
-
starter.py
不应等待daemon.py
完成。通过在fork()
中使用starter.py
来满足此要求。
import os
pid = os.fork()
if pid == 0:
os.system("python daemon.py")
这满足了第一个要求,但仍然面临一个问题,将我们带到第二个要求。
-
daemon.py
即使我退出也应该继续运行starter.py
。使用fork
无法满足此要求。
然后我尝试使用 subprocess
此处的答案所建议的 Python spawn off a child subprocess,detach,and exit
import subprocess
subprocess.Popen(['python','daemon.py'],cwd="/",stdout=None,stderr=None)
这也有同样的问题。当我退出 starter.py
时,daemon.py
也会停止。
我在 SIGTERM
上使用 daemon.py
事件侦听器。它正在侦听来自 starter.py
的事件。因此,问题来了。
daemon.py
看起来像这样。
import sys
import signal
def handler():
other_business()
sys.exit(0)
while True:
business()
signal.signal(signal.SIGTERM,handler)
try:
time.sleep(1)
except KeyboardInterrupt:
exit()
Python 版本:3.5.2
如何完全独立于 daemon.py
运行 starter.py
?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)