Django视图与独立进程

1 投票
3 回答
537 浏览
提问于 2025-04-16 18:49

我想做一些类似的事情:

f(n) 这个函数用来计算 n 的阶乘,这个计算显然需要花费很长时间,所以这些计算需要在一个和 Django 视图分开的进程中运行。此外,我希望视图能够立即返回一个响应(比如进度 0%),然后后续的查询需要更新进度,所以视图需要和上面的进程进行沟通。

那么,最好的实现方法是什么呢?

3 个回答

0

我用过这个链接里的方法,效果很好:Django中的信号。里面关于“异步处理信号”的部分,使用了Python的线程模块,这就是我用的部分。

虽然这个信号的代码有点过时了(尽管它在谷歌搜索中排在前面),但线程的代码可能对你帮助最大。

6

可以试试这个叫 django-celery 的工具。

0

Andrey Fedoseev 提出了一个很好的建议,但让我来提供一个更通用的解决方案。你可以创建一个叫做 WaitingTasks 的模型,视图可以把新任务放到这个模型里。然后,可以用任何方法来处理这些等待的任务,比如定时任务(cronjob)、启动守护进程(upstart daemon)等等,处理完后再把进度和结果写回去。

(实际上,celery 也使用了类似的方法,只不过它用的是 RabbitMQ)

撰写回答