我正在用Python(Django)编写一个Web应用程序,它将执行侧面的任务/进程,通常是网络扫描。我希望用户能够终止扫描,实时查看其状态或结果。
我认为最好的方法之一就是拥有一个独立的作业管理器守护程序:
我正在努力解决这段代码的结构问题。我认为守护进程上的TCP端口将接受新的作业。然后它将创建一个os.fork(),它本身将创建一个os.fork()。第二个fork将为nmap执行os.execv()。第一个os.fork()将监视第二个fork(如何?),当它完成时,它将向主守护程序报告它已结束。第一个fork也必须能够终止第二个子进程。
听起来怎么样?是否有任何结构已经完成?我不想重新制作轮子。
最后,子进程如何知道第二个子节点,即运行os.execv()的子节点已经终止?或者它是否还在运行?我不想继续轮询一系列流程。
正如我所说,这必须在Python中完成。
答案 0 :(得分:0)
我选择了基于fork的方法。这种方法是“错误的”,但它可以满足我的需求。 https://gist.github.com/FarhansCode/a0f27469142b6afaa6c2