Django ビューから完了するまでに数時間かかるプロセスを実行する必要があります。状態を知ったり、状態と通信したりする必要はありませんが、プロセスを開始した直後にそのビューをリダイレクトする必要があります。
を使用してみましsubprocess.Popen
たが、 new 内で使用してthreading.Thread
、multiprocessing.Process
. ただし、親プロセスは、子が終了するまでハングし続けます。それをほぼ完成させる唯一の方法は、フォークを使用することです。親プロセスが終了するまでゾンビ プロセスを残すため、これは明らかに良くありません。
それが、フォークを使用するときに私がやろうとしていることです:
if os.fork() == 0:
subprocess.Popen(["/usr/bin/python", script_path, "-v"])
else:
return HttpResponseRedirect(reverse('view_to_redirect'))
では、死傷者を最小限に抑えて Django ビューから完全に独立したプロセスを実行する方法はありますか? それとも私は何か間違ったことをしていますか?