我有一堆 Django 请求,它们执行一些数学计算(用 C 编写并通过 Cython 模块执行),这可能需要不确定的时间(大约 1 秒)来执行。此外,请求不需要访问数据库,并且彼此独立且 Django。
现在一切都是同步的(使用带有sync
工作类型的 Gunicorn),但我想让它异步且非阻塞。简而言之,我想做一些事情:
- 接收 AJAX 请求
- 将任务分配给可用的工作人员(不阻塞主 Django Web 应用程序)
- 工人在未知的时间内执行任务
- 每当任务完成时,Django 将计算结果(字符串列表)作为 JSON 返回
我对异步 Django 很陌生,所以我的问题是这样做的最佳堆栈是什么。
任务队列非常适合这种过程吗?有人会推荐 Tornado + Celery + RabbitMQ,还是别的什么?
提前致谢!