微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中产生一个完全分离的进程?

如何解决如何在python中产生一个完全分离的进程?

!!!子流程对我不起作用。

我想将 python 脚本 daemon.py 作为守护进程运行。此脚本需要从另一个名为 starter.py

的脚本激活

要求:

  1. starter.py 不应等待 daemon.py 完成。通过在 fork() 中使用 starter.py 来满足此要求。
import os

pid = os.fork()
if pid == 0:
   os.system("python daemon.py")

这满足了第一个要求,但仍然面临一个问题,将我们带到第二个要求。

  1. 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 举报,一经查实,本站将立刻删除。