我正在用 Python (Django) 编写一个 Web 应用程序,它会同时执行任务/进程,通常是网络扫描。我希望用户能够终止扫描、实时查看其状态或结果。
我认为最好的方法之一是拥有一个独立进程的作业管理器守护进程,它:
- 通过 TCP 连接接受新工作。
- 接受用户命令,通常是终止或重新启动进程。
- 报告工作状态。
我正在为这段代码的结构而苦苦挣扎。我认为守护进程上的 TCP 端口将接受新作业。然后它将创建一个 os.fork(),它本身将创建一个 os.fork()。第二个 fork 将为 nmap 执行 os.execv()。第一个 os.fork() 将监视第二个 fork(如何?),当它完成时,它将向主守护进程报告它已经结束。第一个 fork 还必须能够终止第二个子进程。
听起来怎么样?是否已经完成了任何结构?我不想重新造轮子。
最后,子进程如何知道运行 os.execv() 的第二个子进程已经终止?或者它是否还在运行?我不想连续轮询进程列表。
正如我所说,这必须用 Python 完成。
最佳答案
我选择了基于 fork 的方法。这种方法是“错误的”,但它有效并满足了我的需求。 https://gist.github.com/FarhansCode/a0f27469142b6afaa6c2
关于python - 设计多进程守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35712010/