在 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 应用程序中处理计算密集型任务 的相关文章

  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • 如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构

    我想在 Python 中更新 YAML 文件值 而不丢失 Python 中的格式和注释 例如我想改造 YAML 文件 value 456 nice value to value 6 nice value 界面类似于 y yaml load
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • 我们如何确定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 应用程序中并运行它并不是一个好主意 因为这