我有一堆Django请求,它执行一些数学计算(用C编写,并通过Cython模块执行),执行时间可能不确定(1秒)。另外,这些请求不需要访问数据库,它们都是相互独立的,并且是Django的。
现在,一切都是同步的(使用Gunicorn和sync工作者类型),但我想让这个异步和非阻塞。总之,我想做点什么:
当任务完成request
我对异步Django非常陌生,所以我的问题是,做这个的最佳堆栈是什么。
这类进程是否是任务队列非常适合的东西?有人会推荐龙卷风+芹菜+ RabbitMQ,或者其他什么吗?
提前感谢!
发布于 2011-09-14 18:19:39
由于您正在计划使其成为异步(可能使用类似于gevent的东西),您还可以考虑为计算工作创建一个线程/分叉的后端web服务。
异步前端服务器可以处理所有轻量级的工作,从适合异步(redis或mysql具有特殊驱动程序)的数据库获取数据等。当需要进行计算时,前端服务器可以将所有输入数据发送到后端服务器,并在后端服务器完成计算时检索结果。
因为前端服务器是异步的,所以它在等待结果时不会阻塞。与使用芹菜相比,这一方法的优点是,一旦结果可用,您就可以将结果返回给客户。
client browser <> async frontend server <> backend server for computationshttps://stackoverflow.com/questions/4535540
复制相似问题