Django 异步处理

2023-11-23

我有一堆 Django 请求,它们执行一些数学计算(用 C 编写并通过 Cython 模块执行),这可能需要不确定的时间(大约 1 秒)来执行。此外,请求不需要访问数据库,并且彼此独立且独立于 Django。

现在一切都是同步的(使用 Gunicorn 和sync工人类型),但我想使其异步且非阻塞。简而言之,我想做一些事情:

  1. 接收AJAX请求
  2. 将任务分配给可用的工作人员(不阻塞主 Django Web 应用程序)
  3. Worker 在未知的时间内执行任务
  4. 每当任务完成时,Django 都会以 JSON 形式返回计算结果(字符串列表)

我对异步 Django 非常陌生,所以我的问题是执行此操作的最佳堆栈是什么。

任务队列非常适合这种过程吗?有人会推荐 Tornado + Celery + RabbitMQ 或其他东西吗?

提前致谢!


芹菜非常适合这个。

由于您正在做的事情相对简单(请阅读:您不需要关于如何路由任务的复杂规则),您可能可以使用 Redis 后端,这意味着您不需要设置/配置 RabbitMQ (根据我的经验,这更困难)。

我在 Celery 的开发版本中使用 Redis,以下是我的配置的相关部分:



# Use redis as a queue
BROKER_BACKEND = "kombu.transport.pyredis.Transport"
BROKER_HOST = "localhost"
BROKER_PORT = 6379
BROKER_VHOST = "0"

# Store results in redis
CELERY_RESULT_BACKEND = "redis"
REDIS_HOST = "localhost"
REDIS_PORT = 6379
REDIS_DB = "0"
  

我也在用django-celery,这使得与 Django 的集成变得很愉快。

如果您需要任何更具体的建议,请发表评论。

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

Django 异步处理 的相关文章

随机推荐

  • 如何解决“本地主机意外关闭连接”错误?

    我正在努力通过 Mean Machine JavaScript 堆栈初学者实用指南 作者 Chris Sevilleja 我的问题在第 60 页 根据本书的说明 我创建了一个小问题server js文件 以及package json 并使用
  • 远程跟踪分支和远程分支有什么区别?

    看来我可以从远程存储库上的分支中提取或推送到我正在处理的分支 如果是这样 那么远程跟踪分支的目的是什么 仅仅是为了检查分支并看看它是什么样子吗 看起来远程跟踪分支就像远程分支的镜子 仅供参考 我对 git 相当陌生 但是已经阅读并重新阅读了
  • TMemo 最大宽度

    有没有办法让TMemo将超过1024的文本显示为1行 看看这个简单的代码 procedure TForm1 Button2Click Sender TObject var s string i integer begin s for i 0
  • 了解非阻塞线程同步和Thread.MemoryBarrier

    在这本线程在线书中 http www albahari com threading part4 aspx 有一个例子Thread MemoryBarrier class Foo int answer bool complete void A
  • 欠定系统的非负最小二乘

    考虑以下问题 Find x 1 x 2 x 3 gt 0这样 67 5 60 x 1 90 x 2 120 x 3 60 30 x 1 120 x 2 90 x 3 有没有办法在Python中解这个方程 也许与scipy nnls 使用 s
  • 同时按总和聚合一列并按平均值聚合另一列

    我想在日期框架上使用聚合函数 但对一列求和并取另一列的平均值 这是一个示例数据框 Manager Category Amount SqFt Joe Rent 150 500 Alice Rent 250 700 Joe Utilities
  • 更改通用 Windows 平台中的按钮样式

    我尝试制作一个简单的 C UWP 应用程序 但我不知道当鼠标悬停在按钮上时如何删除灰色背景 我怎么做到这一点 请记住 它是适用于 Windows 10 平台的 UWP 而不是 Windows Phone 8 1 或 WPF 按着这些次序 在
  • Qt 检测计算机何时进入睡眠状态?

    如何检测用户计算机何时进入睡眠状态 笔记本电脑盖子关闭 由于不活动而进入睡眠模式等 我需要这样做来断开用户的 TCP 连接 基本上我们有一个简单的聊天应用程序 我们想让用户离线 Qt 无法检测计算机何时进入睡眠或休眠状态 但有一些依赖于平台
  • 对于数组,为什么会出现 a[5] == 5[a] 的情况?

    正如乔尔在书中指出的那样堆栈溢出播客 34 in C语言 又名 K R C 中提到了数组的这个属性 a 5 5 a Joel 说这是因为指针运算 但我还是不明白 为什么a 5 5 a C 标准定义了 运算符如下 a b a b 所以a 5
  • Django Rest框架-过滤多对多字段

    假设我有一个这样的模型 class Car models Model images models ManyToManyField Image class Image models Model path models CharField ty
  • ZF2 中的会话

    您能告诉我如何在 ZF2 中正确使用会话吗 到目前为止我有这个代码 session gt remember me seconds gt 2419200 use cookies gt true cookie httponly gt true
  • 在列表中创建重复的项目

    我有以下代码来复制列表的成员X times 虽然它有效 但感觉不是特别干净 实时代码示例 http rextester com UIVZVX7918 public static List
  • 如何通过方法参数加锁?

    string Get string key lock sync DoSomething 如果 DoSomething 仅依赖于密钥 我想要密钥依赖锁 我认为它可能是带有同步对象的字典 有没有完整的解决方案 就像真实的例子一样在 ASP NE
  • Instagram API 匹配代码未找到或已被使用

    我在使用 Instagram API 的实时服务器上看到此错误 Error true message Matching code was not found or was already used 我在这里阅读了一些清除缓存的建议 但这并不
  • Laravel:POST 方法返回 MethodNotAllowedHttpException

    我有一个POST路线在我的api php文件 它是这样的 Route group namespace gt api function Route post parent signup ParentController signUp 我正在尝
  • ejb 3.1 中的计时器服务 - 调度调用超时问题

    我使用 Singleton Schedule 和 Timeout 注释创建了简单的示例 以尝试它们是否能解决我的问题 场景是这样的 EJB 每 5 秒调用一次 检查 函数 如果满足某些条件 它将创建单个操作计时器 该计时器将以异步方式调用一
  • JavaFX:将控制台输出重定向到在 SceneBuilder 中创建的 TextArea

    EDIT 4 我创建了一个简单的示例 应该可以让您了解现在发生的情况 现在发生的情况是 每当我单击按钮将 HELLO WORLD 打印到 TextArea 时 程序就会挂起并使用 100 的 CPU Eclipse 控制台面板中也没有输出
  • 检查 COM 接口是否还存在?

    在 COM 中 如何验证指向 COM 对象的指针在另一端仍然具有有效的对象 我遇到一个问题 以下代码尝试检查是否m pServer指针仍然存在 但是当暴露该接口的应用程序被终止时 这段代码会使应用程序崩溃 有人可以建议如何在使用前检查指针吗
  • 在 Activity 的 onDestroy 方法中保存数据

    我正在编写一个任务列表并拥有 Project 对象 其中包含所有任务 和元数据 我使用操作日志 因此当任务发生变化时 我不会立即将其保存到数据库中 而是将其保留在内存中 以便在活动完成时转储到数据库中 Activity 的 onDestro
  • Django 异步处理

    我有一堆 Django 请求 它们执行一些数学计算 用 C 编写并通过 Cython 模块执行 这可能需要不确定的时间 大约 1 秒 来执行 此外 请求不需要访问数据库 并且彼此独立且独立于 Django 现在一切都是同步的 使用 Guni