django,fastcgi:如何管理一个长时间运行的进程?

8 python django fastcgi

我继承了一个django + fastcgi应用程序,需要对其进行修改以执行冗长的计算(最多半小时或更长时间).我想要做的是在后台运行计算并返回"你的工作已经开始" - 类型的响应.当进程正在运行时,对URL的进一步命中应返回"您的作业仍在运行",直到作业完成,此时应返回作业的结果.对url的任何后续命中都应该返回缓存的结果.

我是django的一个新手,并且在十年内没有做过任何重要的网络工作,所以我不知道是否有内置的方法来做我想要的.我已经尝试通过subprocess.Popen()启动该过程,并且它工作正常,除了它在进程表中留下一个已解除的条目.我需要一个干净的解决方案,一旦完成就可以删除临时文件和进程的任何痕迹.

我也尝试过fork()和线程,但还没有找到可行的解决方案.对于我来说似乎是一个非常常见的用例,是否有规范的解决方案?FWIW这只会在流量非常低的内部服务器上使用.

cha*_*log 3

也许你可以换个角度看问题。

也许您可以尝试DjangoQueueService,并让“守护进程”监听队列,查看是否有新内容并处理它。