首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django异步处理

Django异步处理
EN

Stack Overflow用户
提问于 2010-12-26 21:45:43
回答 1查看 10.1K关注 0票数 8

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

现在,一切都是同步的(使用Gunicorn和sync工作者类型),但我想让这个异步和非阻塞。总之,我想做点什么:

当任务完成request

  • Allocate时,
  1. 将AJAX
  2. 任务接收给可用的工作人员(而不阻塞主要的Django web应用程序),
  3. worker在未知的时间内执行任务,
  4. Django将计算结果(字符串列表)作为JSON返回

我对异步Django非常陌生,所以我的问题是,做这个的最佳堆栈是什么。

这类进程是否是任务队列非常适合的东西?有人会推荐龙卷风+芹菜+ RabbitMQ,或者其他什么吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2011-09-14 18:19:39

由于您正在计划使其成为异步(可能使用类似于gevent的东西),您还可以考虑为计算工作创建一个线程/分叉的后端web服务。

异步前端服务器可以处理所有轻量级的工作,从适合异步(redis或mysql具有特殊驱动程序)的数据库获取数据等。当需要进行计算时,前端服务器可以将所有输入数据发送到后端服务器,并在后端服务器完成计算时检索结果。

因为前端服务器是异步的,所以它在等待结果时不会阻塞。与使用芹菜相比,这一方法的优点是,一旦结果可用,您就可以将结果返回给客户。

代码语言:javascript
复制
client browser <> async frontend server <> backend server for computations
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4535540

复制
相关文章

相似问题

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