2016-02-29 79 views
1

我写在Python(Django的)的网络应用程序将在端执行任务/进程,典型的网络扫描。我希望用户能够终止扫描,实时查看其状态或结果。设计一个多进程守护

我认为要做到这一点的最好办法之一是有一个作业管理器守护进程,是一个独立的过程,即:

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

我这个代码的结构挣扎。我认为守护进程上的TCP端口将接受新的作业。然后它将创建一个os.fork(),它本身将创建一个os.fork()。第二个fork将为nmap执行os.execv()。第一个os.fork()会监视第二个fork(如何?),当它完成时,它会向master守护进程报告它已经结束。第一个分支也必须能够终止第二个子进程。

这听起来怎么样?这种结构是否已经完成?我不想重新创造轮子。

最后,如何将子进程知道第二个孩子,一个运行os.execv()已经终止?还是它仍在运行?我讨厌不断地调查一系列进程。

正如我已经说过了,这一点必须在Python完成。

+0

... –

+0

我描述芹菜?我不知道你的意思。 –

+0

芹菜是一个python分布式任务运行者http://www.celeryproject.org/。也就是说,实际上你并没有描述芹菜,你基本上描述了一个标准的普通网络守护进程。有可能在python中执行你所要求的操作,但是由于你明确表示你不想重新发明轮子,所以我建议你看看Python标准库中包含的socketserver模块https://docs.python.org/3.4 /library/socketserver.html –

回答