我正在尝试从Flask应用程序中生成长进程。因此,我有一个主要流程来处理传入的Web请求,并使用python-daemon库从中启动守护程序。这是一个最小的工作示例:
import os
导入时间
导入守护程序
导入锁定文件
def daemon_function():
返回True
working_directory = os.path.dirname(os.path.abspath(__ file__))
pid_file = os.path.join(working_directory,“ my_daemon.pid”)
daemon_context = daemon.DaemonContext(
working_directory =正在工作的目录,
pidfile = lockfile.FileLock(pid_file),
)
pid = os.fork()
如果pid == 0:
使用daemon_context:
daemon_function()
时间。睡眠(10)
当主进程仍在运行时使用linux命令 ps -ef
时,守护进程终止后,我看到以下输出:
用户2484 1 0 09:38吗? 00:00:01 / lib / systemd / systemd --user
用户11269 6061 0 12:07 pts 2 00:00:00 bash
用户28817 11269 1 15:43 pts / 2 00:00:00 python test_daemon.py
用户28818 28817 0 15:43 pts 2 00:00:00 [python] <已停用>
之所以在带有daemon_context:的语句之前使用fork函数是因为我需要主进程才能继续。
我应该担心所创建的已终止进程(我可能会产生很多)吗?我如何避免这个僵尸出现?