首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django webapp应用程序中处理计算密集型任务

在Django webapp应用程序中处理计算密集型任务
EN

Stack Overflow用户
提问于 2014-09-09 17:40:50
回答 1查看 1.3K关注 0票数 7

我有一个桌面应用程序,我正在移植到Django webapp应用程序。这个应用程序有一些计算量很大的部分(使用numpy、scipy和大熊猫等库)。显然,将计算密集型代码导入webapp并运行它并不是一个好主意,因为这将迫使客户端等待响应。

因此,您必须将这些任务分解到一个后台进程,该进程通知客户端(我猜是通过AJAX )并/或在完成后将结果存储在数据库中。

在多个并发用户的情况下,您也不希望所有这些任务同时运行,因为这是一种很好的方法,即使有少量并发请求,也可以使服务器陷入瘫痪。理想情况下,您希望way应用程序的每个实例将其任务放入作业队列中,然后以最佳方式自动运行它们(基于内核数量、可用内存等)。

有什么好的Python库可以帮助解决这类问题吗?在这种情况下,人们是否会使用一般的策略?或者,这只是选择一个好的批处理调度程序并为每个进程生成一个新的Python解释器的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-09 18:01:19

我们开发了一个Django web应用程序,它可以进行大量的计算(在高端服务器上完成每个过程需要11到88小时)。

芹菜:芹菜是一种基于分布式消息传递的异步任务队列/作业队列。它既关注实时操作,又支持调度.

芹菜

  • 异步运行任务。
  • 分布式执行昂贵的进程。
  • 定期和(或)排定任务。
  • 如果出了问题就重新尝试任务。

这只是冰山一角。芹菜有很多特色。看看文档 & 常见问题

您还需要设计一个非常好的工作流画布。例如,您不希望在多个并发用户的情况下所有任务同时运行,因为这是一种资源消耗。此外,您可能希望根据当前联机的用户来安排任务。

此外,您还需要非常好的数据库设计,高效的算法等。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25750764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档