我需要運行一個可能需要幾個小時才能從Django視圖完成的進程。我不需要知道狀態或與之通信,但是我需要這個視圖在啓動過程後立即重定向。如何從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視圖運行一個完全獨立的進程?或者我做錯了什麼?
重複: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 – 2009-10-25 11:54:13