一个长期运行的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