python - Django - 如何设置异步长时间后台数据处理任务?

标签 python django background-process backend

关于 Django 应用程序设计的新手问题:

我正在为我的网站构建报告引擎。而且我有大量(并且随着时间的推移越来越大)的数据,以及一些必须应用于它的算法。计算 promise 会占用大量资源,如果根据用户的请求执行计算,那将是愚蠢的。因此,我想将它们放入后台进程,该进程将持续执行并不时返回结果,这些结果可以提供给 Django views-routine 以按需生成 html 输出。

我的问题是 - 构建此类系统的正确设计方法是什么?有什么想法吗?

最佳答案

celery 是您最好的选择之一。我们正在成功地使用它。它具有强大的调度机制——您可以将任务安排为定时作业,也可以在用户(例如)请求时在后台触发任务。

它还提供了查询此类后台任务状态的方法,并具有许多流量控制功能。它允许非常容易地分配工作——即你的 celery 后台任务可以在单独的机器上运行(这非常有用,例如 heroku web/workers split,其中 web 进程被限制为每个请求最多 30 秒)。它提供各种队列后端(它可以使用数据库、rabbitMQ 或许多其他队列机制。通过最简单的设置,它可以使用您的 Django 站点已经为此使用的相同数据库(这使得设置很容易)。

如果您正在使用自动化测试,它还有一个有助于测试的功能 - 它可以设置为“eager”模式,后台任务不会在后台执行 - 从而提供可预测的逻辑测试。

更多信息在这里:http://docs.celeryproject.org:8000/en/latest/django/

关于python - Django - 如何设置异步长时间后台数据处理任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780732/

相关文章:

python - Pandas:根据 bool 列表/字典替换数据框列

python - Django:首次提交后奇怪的表单集行为

python - 下划线方法意味着什么?

django - 在 Django Admin 中保存后如何保留过滤器选择

django - 扩展用户配置文件

django - Ajax 和 ModelForm 更新模型

c# - 在后台运行应用程序 : Windows phone 8 phonegap

Python:set.add() 函数不添加重复项吗?

android - 如何知道应用程序的后台服务何时被android中的其他 super 访问应用程序阻止

ios - Trigger.io 在后台保持长轮询连接打开