我需要运行,可能需要几个小时从一个Django视图来完成的过程。 我并不需要知道状态或与它沟通,但我需要一个视图启动后要立即离开重定向。
我已经尝试使用subprocess.Popen
,新中使用它threading.Thread
, multiprocessing.Process
。 但是,父进程一直挂着,直到子进程终止。 几乎得到它做的唯一方法是用叉子。 显然是因为它留下,直到父终止僵尸进程是不好的。
这就是我试图用叉子时要做到:
if os.fork() == 0:
subprocess.Popen(["/usr/bin/python", script_path, "-v"])
else:
return HttpResponseRedirect(reverse('view_to_redirect'))
那么,有没有一种方法,以最小的伤亡Django视图运行一个完全独立的进程? 还是我做错了什么?