python - 设计多进程守护进程

标签 python linux daemon python-daemon

我正在用 Python (Django) 编写一个 Web 应用程序,它会同时执行任务/进程,通常是网络扫描。我希望用户能够终止扫描、实时查看其状态或结果。

我认为最好的方法之一是拥有一个独立进程的作业管理器守护进程,它:

  1. 通过 TCP 连接接受新工作。
  2. 接受用户命令,通常是终止或重新启动进程。
  3. 报告工作状态。

我正在为这段代码的结构而苦苦挣扎。我认为守护进程上的 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/

相关文章:

python - 检查python中networkx中是否存在具有相同标签的节点

linux - 在 nano 中向上/向下移动整行快捷方式(类似于 intelliJ 或 Visual Studio)

perl - 如何在 Perl 中编写一个简单的 HTTP 代理?

python - Python中的Matplotlib-绘制形状并对其进行动画处理

python - 如何在 Python3 中检测 concurrent.futures 中的异常?

c++ - Mac/IOS 是否使用与 Linux 内核相同的 sys/socket.h?

java - Java 中的守护进程线程数

macos - 配置 mongod 服务 : launch daemon or launch agent?

python - 检查字符串列表中的字符

linux - 保留从 ant sshexec 任务更改的环境变量值