解耦和Dockerize Django和Celery

时间:2017-01-17 15:46:52

标签: django docker celery django-celery

我想知道将芹菜与Django分离的最佳方法是将两部分停靠并使用docker swarm service吗?通常一个人开始他们的芹菜工人和芹菜击败使用引用Django应用程序的命令:

celery worker -A my_app
celery beat -A my_app

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

2 个答案:

答案 0 :(得分:2)

我使用的设置是django应用程序及其芹菜工作者的代码相同(如在单个存储库中)。

部署时我确保在任何地方都有相同的代码版本,以避免ORM出现任何意外等...

Celery首先引用django应用,以便它可以访问模型等...

工作人员和主应用程序之间的通信通过消息传递队列(rabbitmqredis ...)或通过数据库进行(例如,芹菜工作者直接在数据库中工作,因为它知道模型等...)。

我不确定这是否遵循微服务口号,但确实有效:)

答案 1 :(得分:0)

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