守护进程与django一起进行

时间:2017-10-26 22:07:37

标签: python django architecture celery ipc

想看看其他人认为以下最佳架构。

我正在尝试构建一个带有Web前端的项目,该项目需要向其他长时间运行的进程发出命令,这些进程会将结果返回给django db。该应用程序必须具有可扩展性(在数据库和处理能力方面)并且能够快速运行。

我已经考虑过以下情况,但想检查是否有更好的方法。

Django网络应用程序接收用户的指示(通过网络表单或API)提出此请求'进入一个队列(哪种技术最好?)另一个进程(异步运行以获得性能,没有启动成本)可以消耗(它是如何做到的?通过监视队列?IPC?)。这个应用程序然后返回它的处理结果,需要将其放回django数据库(最好通过另一个队列或直接访问来执行此操作?)

关于理智和技术的思考。教程的链接会很棒!

  • 如何运行异步进程。芹菜,主机守护进程?
  • 如何从主django app / db获取数据。队列,套接字IPC?
  • 在这里某处使用django信号?!

1 个答案:

答案 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队列轻松添加更多消息/任务队列。