【发布时间】:2011-05-30 22:47:42
【问题描述】:
我有一堆 Django 请求,它们执行一些数学计算(用 C 语言编写并通过 Cython 模块执行),执行时间可能不确定(大约 1 秒)。此外,请求不需要访问数据库,并且都相互独立且独立于 Django。
现在一切都是同步的(使用带有 sync 工作类型的 Gunicorn),但我想让它异步且非阻塞。总之我想做点什么:
- 接收 AJAX 请求
- 将任务分配给可用的工作人员(不阻塞主 Django Web 应用程序)
- Worker 在未知时间内执行任务
- 每当任务完成时,Django 都会以 JSON 形式返回计算结果(字符串列表)
我对异步 Django 很陌生,所以我的问题是什么是最好的堆栈。
任务队列非常适合这种过程吗?有人会推荐 Tornado + Celery + RabbitMQ,还是其他?
提前致谢!
【问题讨论】:
-
你如何处理计算结果?
-
将结果(以 JSON 格式)返回给用户的浏览器。
标签: python django asynchronous celery cython