【问题标题】:Decouple and Dockerize Django and Celery解耦和 Dockerize Django 和 Celery
【发布时间】:2017-06-01 18:25:53
【问题描述】:

我想知道将 Celery 与 Django 解耦以便将这两个部分 dockerize 并使用 docker swarm service 的最佳方法是什么?通常,使用引用 Django 应用程序的命令启动他们的 celery worker 和 celery beat:

celery worker -A my_app
celery beat -A my_app

据此,我相信 celery 从设置文件和 celery.py 文件中获取配置信息,该文件很容易迁移到微服务。我不完全理解的是这些任务将如何利用 Django ORM?或者说,微服务的口头禅和 Celery 不应该被设计为对 Django REST Framework API 进行 GET/POST 调用,以获取完成任务所需的数据?

【问题讨论】:

  • 您找到任何相关信息了吗?我同样希望将我的 django/celery 应用程序移动到使用 swarm,但我遇到了很多问题正确 dockerizing 它,很想听听你是否有任何成功!

标签: django docker celery django-celery


【解决方案1】:

我使用了一个设置,其中 django 应用程序及其 celery worker 的代码是相同的(就像在一个存储库中一样)。

在部署时,我确保在各处发布相同的代码,以避免 ORM 等出现任何意外...

Celery 以对 django 应用程序的引用开始,以便它可以访问模型等...

worker 和主应用程序之间的通信通过消息队列(rabbitmqredis...)或通过数据库(如 celery worker 直接在 db 中工作,因为它知道模型等...)。

我不确定这是否遵循微服务的原则,但它确实有效 :)

【讨论】:

    【解决方案2】:

    Celery 的 .send_task.signature 可能会有所帮助: https://www.distributedpython.com/2018/06/19/call-celery-task-outside-codebase/

    【讨论】:

      猜你喜欢
      • 2016-09-09
      • 2011-07-24
      • 2012-10-06
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2011-07-17
      相关资源
      最近更新 更多