解耦和 Dockerize Django 和 Celery
Posted
技术标签:
【中文标题】解耦和 Dockerize Django 和 Celery【英文标题】:Decouple and Dockerize Django and 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 它,很想听听你是否有任何成功! matthewminer.com/2015/02/21/… 【参考方案1】:我使用了一个设置,其中 django 应用程序及其 celery worker 的代码是相同的(就像在一个存储库中一样)。
在部署时,我确保在各处发布相同的代码,以避免 ORM 等出现任何意外...
Celery
以对 django 应用程序的引用开始,以便它可以访问模型等...
worker 和主应用程序之间的通信通过消息队列(rabbitmq
或 redis
...)或通过数据库(如 celery worker 直接在 db 中工作,因为它知道模型等...)。
我不确定这是否遵循微服务的原则,但它确实有效 :)
【讨论】:
【参考方案2】:Celery 的 .send_task
或 .signature
可能会有所帮助:
https://www.distributedpython.com/2018/06/19/call-celery-task-outside-codebase/
【讨论】:
以上是关于解耦和 Dockerize Django 和 Celery的主要内容,如果未能解决你的问题,请参考以下文章
使用 mongoDB Dockerize Django 应用程序
使用 Django、webpack、reactjs、react-router 解耦前端和后端
[转] 利用dockerize模板为容器内应用生成配置文件和环境变量