设计一个多进程守护进程

时间:2016-02-29 23:43:11

标签: python linux daemon python-daemon

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

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

  1. 通过TCP连接接受新作业。
  2. 接受用户命令,通常是终止或重新启动进程。
  3. 报告工作状态。
  4. 我正在努力解决这段代码的结构问题。我认为守护进程上的TCP端口将接受新的作业。然后它将创建一个os.fork(),它本身将创建一个os.fork()。第二个fork将为nmap执行os.execv()。第一个os.fork()将监视第二个fork(如何?),当它完成时,它将向主守护程序报告它已结束。第一个fork也必须能够终止第二个子进程。

    听起来怎么样?是否有任何结构已经完成?我不想重新制作轮子。

    最后,子进程如何知道第二个子节点,即运行os.execv()的子节点已经终止?或者它是否还在运行?我不想继续轮询一系列流程。

    正如我所说,这必须在Python中完成。

1 个答案:

答案 0 :(得分:0)

我选择了基于fork的方法。这种方法是“错误的”,但它可以满足我的需求。 https://gist.github.com/FarhansCode/a0f27469142b6afaa6c2