【问题标题】:Daemon process alongside djangodjango 旁边的守护进程
【发布时间】:2018-04-08 10:35:56
【问题描述】:

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

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

我想到了以下场景,但想检查是否有更好的方法。

Django Web 应用程序接收来自用户的指令(通过 Web 表单或 API)将这个“请求”放入队列中(哪种技术最好?)另一个进程(异步运行以获得性能,无启动成本)可以使用(它是如何做到的?通过监控队列?IPC?)。这个应用程序然后返回它的处理结果,需要将它放回 django db(最好通过另一个队列或直接访问来做到这一点?)

关于理智......和技术的想法。教程链接会很棒!

  • 如何运行异步进程。 Celery,宿主守护进程?
  • 如何从主 django app/db 获取数据。队列、socket IPC?
  • 在这里某处使用 django 信号?!

【问题讨论】:

    标签: python django architecture celery ipc


    【解决方案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 队列来轻松添加更多消息/任务队列。

    【讨论】:

    猜你喜欢
    • 2012-10-12
    • 2018-06-11
    • 2014-07-03
    • 2023-03-02
    • 1970-01-01
    • 2021-02-03
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多