Ich muss einen Prozess ausführen, der in einer Django-Ansicht Stunden dauern kann. Ich muss den Status nicht kennen oder mit ihm kommunizieren, aber ich brauche diese Ansicht, um direkt nach dem Start des Prozesses umzuleiten.Wie startet man einen lang andauernden Prozess aus einer Django-Sicht?
Ich habe versucht, subprocess.Popen
, verwenden Sie es in einem neuen threading.Thread
, multiprocessing.Process
. Der Elternprozess bleibt jedoch hängen, bis das Kind beendet wird. Der einzige Weg, fast wird es getan, ist mit einer Gabel. Offensichtlich ist das nicht gut, da es einen Zombie-Prozess zurücklässt, bis der Elternteil endet.
Das ist, was ich versuche, wenn Gabel zu tun:
if os.fork() == 0:
subprocess.Popen(["/usr/bin/python", script_path, "-v"])
else:
return HttpResponseRedirect(reverse('view_to_redirect'))
So ist es eine Möglichkeit, einen völlig unabhängigen Prozess von einer Django-Ansicht mit minimalen Verlusten zu laufen? Oder mache ich etwas falsch?
Duplizieren von all diesen: http://stackoverflow.com/search?q=%5Bpython%5D+long-running. http://stackoverflow.com/questions/1107826/python-long-running-daemon-job-processor, http://stackoverflow.com/questions/805120/python-task-server –