我想做类似的事情:
f(n)计算n! ,这显然需要很长时间才能完成,因此计算需要在与django视图分开的进程中运行。另外,我希望视图立即返回响应(例如进度0%)以及后续轮询需要更新进度,因此视图需要与上述过程进行通信。
实现这一目标的最佳方式是什么?
答案 0 :(得分:6)
答案 1 :(得分:0)
Andrey Fedoseev提出了一个很好的建议,但让我想出一个更通用的解决方案。您可以创建一些WaitingTasks模型,您的视图将放置新任务。然后,可以使用任何方法来处理那些等待的任务 - cronjob,upstart守护进程,等等 - 写回进度和结果。
(实际上celery
使用类似的方法,仅使用RabbitMQ)
答案 2 :(得分:0)
我已经使用此链接中包含的策略产生了很大的影响:Signals in Django。我使用的是使用python线程模块的“异步处理信号”部分。
信号代码已过时(即使它位于Google搜索的顶部)。尽管如此,线程代码可能对您有所帮助。