Python 设计一个多进程守护进程

Python 设计一个多进程守护进程,python,linux,daemon,python-daemon,Python,Linux,Daemon,Python Daemon,我正在用Python(Django)编写一个web应用程序,它将执行任务/进程,通常是网络扫描。我希望用户能够终止扫描,查看其状态或实时结果 我认为最好的方法之一是使用一个独立进程的job manager守护进程,即: 通过TCP连接接受新作业 接受用户命令,通常用于终止或重新启动进程 报告作业的状态 我正在为这段代码的结构而挣扎。我认为守护进程上的TCP端口将接受新作业。然后它将创建一个os.fork(),它本身将创建一个os.fork()。第二个fork将为nmap执行os.execv()。

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

我认为最好的方法之一是使用一个独立进程的job manager守护进程,即:

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

    听起来怎么样?是否已经完成了这方面的任何结构?我不想重新创造轮子

    最后,子进程如何知道运行os.execv()的第二个子进程已终止?或者它是否还在运行?我不想连续地对一系列流程进行投票


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

    我选择了基于fork的方法。这种方法是“错误的”,但它有效地满足了我的需要。
    我选择了基于fork的方法。这种方法是“错误的”,但它有效地满足了我的需要。

    你基本上只是描述了芹菜……我描述了芹菜?我不知道你这是什么意思。芹菜是python分布式任务运行程序。也就是说,你们并没有,事实上,描述芹菜,你们基本上描述了一个标准的,普通的,网络守护进程。在python中可以实现您的要求,但既然您明确表示不想重新发明轮子,我建议您看看python标准库中包含的socketserver模块,您基本上只是描述了芹菜……我描述了芹菜?我不知道你这是什么意思。芹菜是python分布式任务运行程序。也就是说,你们并没有,事实上,描述芹菜,你们基本上描述了一个标准的,普通的,网络守护进程。在python中可以实现您的要求,但由于您明确表示不想重新发明轮子,因此我建议您查看python标准库中包含的socketserver模块