想看看其他人认为以下最佳架构。
我正在尝试构建一个带有Web前端的项目,该项目需要向其他长时间运行的进程发出命令,这些进程会将结果返回给django db。该应用程序必须具有可扩展性(在数据库和处理能力方面)并且能够快速运行。
我已经考虑过以下情况,但想检查是否有更好的方法。
Django网络应用程序接收用户的指示(通过网络表单或API)提出此请求'进入一个队列(哪种技术最好?)另一个进程(异步运行以获得性能,没有启动成本)可以消耗(它是如何做到的?通过监视队列?IPC?)。这个应用程序然后返回它的处理结果,需要将其放回django数据库(最好通过另一个队列或直接访问来执行此操作?)
关于理智和技术的思考。教程的链接会很棒!
答案 0 :(得分:1)
我想你已经回答了你的问题。更深入地了解芹菜: http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html
使用celery可以创建任务队列(通过RabbitMq,这是推荐使用的队列)。然后,您可以编写将包含长时间运行任务的worker.py脚本。您的django Web应用程序可以调用您的工作人员中定义的任务,例如: myfunc.delay(4) Celery任务也可以配置为返回结果,或者任务可以通过更新Django应用程序使用的数据库中的数据来返回结果。
Celery允许您通过在任意数量的计算机上运行多个工作程序来扩展,并且您可以通过添加更多rabbitMq队列轻松添加更多消息/任务队列。