一個長期運行的Python函數這裏的粗糙的工作流程:運行從Django的
Request for a job comes in to a particular view -> Job entered in Database -> requestProcessor() launched independent of current process -> Response "Job has been entered" is returned instantly ->
requestProcessor()
查看數據庫,如果有要處理任何未完成的作業看,並開始處理它。需要大約3小時才能完成。
我很長時間以來對這個問題感到困惑。我應該使用multiprocessing.Pool
的apply_async
?我沒有多個流程的經驗,所以我不確定最好的方法是什麼。
這和'pool = Pool(processes = 1)有什麼區別?結果= pool.apply_async(myfunction)'方法?考慮到我正在調用一個Python函數本身,這似乎更方便一些。 – user1265125 2014-11-23 13:45:18
@ user1265125「池」用於工作進程池。我相信你在這裏只需要一個過程。那是對的嗎?你的描述表明這可能是一種行政型工作。我的答案中的方法還調用了一個python函數(我已經任意命名爲'do_job')。 – 2014-11-23 13:47:49
如果經常調用視圖,這將導致發生無法控制的進程增長。 – 2014-11-23 13:50:00