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

2024-04-10

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

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

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

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


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

Celery: http://www.celeryproject.org/Celery是一个基于分布式消息传递的异步任务队列/作业队列。它专注于实时操作,但也支持调度。

芹菜优惠

  • 异步运行任务。
  • 昂贵流程的分布式执行。
  • 定期和/或计划任务。
  • 如果出现问题,重试任务。

这只是冰山一角。 celery 提供了很多功能。看一眼文档 http://docs.celeryproject.org/en/latest/index.html & FAQ http://celery.readthedocs.org/en/latest/faq.html#faq.

你还需要设计一个非常好的工作流程画布 http://docs.celeryproject.org/en/latest/userguide/canvas.html。例如,您不希望在多个并发用户的情况下所有任务同时运行,因为这是一种资源消耗。此外,您可能希望根据当前在线的用户来安排任务。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Django Web 应用程序中处理计算密集型任务 的相关文章

随机推荐

  • 我们如何确定Python中给定月份的天数[重复]

    这个问题在这里已经有答案了 我需要在 python 中计算给定月份的天数 如果用户输入 2011 年 2 月 程序应该能够告诉我 2011 年 2 月有 28 天 谁能告诉我应该使用哪个库来确定给定月份的长度 你应该使用calendar m
  • 如何使用 Material Design 设计警报对话框片段中的按钮样式?

    我想更改警报对话框上的默认按钮样式 标准警报对话框片段 在 Android L 中 如下所示 我希望将右侧按钮的样式设置为普通按钮而不是无边框按钮 Google 本身似乎在各种对话框中使用了这种模式 例如 有谁知道这是否可能 而无需从头开始
  • 如何在 Three.js 中使用反射?

    我想在带有 Three js 的 WebGL 页面中拥有一个反射立方体表面 它应该类似于手机显示屏 反射一些光 但它仍然必须是黑色的 我创建了一个反射立方体 以及反射球体 的示例 并附有详细的注释 现场版本位于 http stemkoski
  • 当用户单击外侧时,警报对话框消失

    大家好 我有一个带有两个文本框的警报框 这里的问题是当用户在弹出窗口之外单击时警报对话框消失 或者当用户单击 确定 按钮时警报对话框消失 所以请在这方面帮助我 提前致谢 final AlertDialog Builder builder n
  • 如何计算FB页面的点赞数?

    我必须做一个非常简单的操作 但我的编程能力还不够 我必须计算 Facebook 页面上的点赞数并将该数字打印在我的网站上 我有两个脚本可以很好地完成普通网站的工作 但它们不想显示页面的点赞数
  • java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompat

    我在 4 4 2 版本的 Samsung note 2 中收到以下错误 我也尝试过 HTC One X 4 2 2 我认为它是棒棒糖之前的 因为它在 Lollipop 上运行良好 有什么猜测吗 这是我的 gradle 文件 apply pl
  • 如何使用 Python 获取存储库分支的列表

    我正在尝试使用 Python 和以下代码获取存储库上所有可用分支的列表 import subprocess branches All command git branch r branch list subprocess check out
  • 向客户端发送 Hibernate 代理类会出现哪些问题

    我有一个 POCO 类 在 WCF 服务层中与 NHibernate 一起使用 我正在考虑尝试将 NHibernate 代理类发送到客户端 这是我控制的客户端 我们通过系统范围的保留来处理记录更新 因此在任何给定时间只能向客户端发送该实体的
  • 如何使用 AngularJS 以编程方式创建 URL

    目前我正在研究 AngularJS 框架 我正在使用 route 服务来深度链接到我的单页应用程序 现在 我想在我的应用程序内部导航 例如 通过仅更改当前 URL 的搜索部分 在 JavaScript 中使用 location 服务很容易做
  • 如果 Google App Engine cron 作业有 10 分钟限制,那么为什么我会在正常的 30 秒后收到 DeadlineExceededError ?

    根据https developers google com appengine docs python config cron https developers google com appengine docs python config
  • 在C#中打印数组的所有内容

    我试图在调用一些改变数组的方法后打印出数组的内容 在Java中我使用 System out print Arrays toString alg id 我如何在 C 中做到这一点 你可以试试这个 foreach var item in you
  • 使用路由器传递数据

    我在将数据传递给其他组件时遇到问题 这是一个例子 onEdit data this router navigate edit state data relativeTo this activatedRoute 还有我的路由器ts file
  • 在 Woocommerce 中的 WYSIWYG 编辑器字段中添加或替换变体字段

    我正在尝试弄清楚如何将 Woocommerce 变体订阅产品文本字段转换为所见即所得编辑器 How it looks now 正如您所看到的 我将代码放入该字段以更新其外观 但这对于不懂代码的客户来说不起作用 如何向该字段添加文本编辑器 函
  • 握手过程中收到close_notify

    我已在所有 18 台服务器上配置了 SSL HTTPS 所有 18 台服务器均使用 SSL 相互通信 一切都工作正常 突然我得到了这个错误 握手期间收到close notify 日志 2011 06 03 03 36 17 372 Log
  • 使用react-router-dom(v6)成功登录后Reactjs重定向到仪表板页面

    我正在使用 redux toolkit 制作简单的 Reactjs 登录表单 我想重定向到dashboard登录成功后的页面 它抛出以下错误 我是 ReactJS 的新手 如果我错过了什么 请告诉我 Error Uncaught in pr
  • 如何修复 Cocoapods 安装设置错误?

    我正在尝试在我的 mac 上安装 cocoapods 但无法安装 它显示以下错误 sudo gem update system Latest version currently installed Aborting sudo gem ins
  • 是否有任何库可以将 SQL 查询表示为 Java 代码中的对象? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有任何库可以用来将 SQL 查询表示为 Java 中的对象 在代码中 我有大量 java l
  • 删除所有表的django命令是什么?

    是否有 django 命令 A 删除所有表 B 删除所有表中的所有数据 C 创建模型中定义的所有表 我现在找不到这些 我所说的命令是指那些小事情 比如 runserver etc A 删除所有表 manage py sqlclear将打印删
  • UISearchBar 与 InputView

    我正在为我的应用程序制作自定义键盘 它与 UITextField 配合得很好 但 UISearchBar 不支持 inputView UIView inputView if self keyboard nil self keyboard M
  • 在 Django Web 应用程序中处理计算密集型任务

    我有一个桌面应用程序 正在将其移植到 Django Web 应用程序 该应用程序有一些计算量相当大的部分 使用 numpy scipy 和 pandas 等库 显然 将计算密集型代码导入到 Web 应用程序中并运行它并不是一个好主意 因为这