我想知道将芹菜与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调用以获得完成任务所需的数据?
答案 0 :(得分:2)
我使用的设置是django应用程序及其芹菜工作者的代码相同(如在单个存储库中)。
部署时我确保在任何地方都有相同的代码版本,以避免ORM出现任何意外等...
Celery
首先引用django应用,以便它可以访问模型等...
工作人员和主应用程序之间的通信通过消息传递队列(rabbitmq
或redis
...)或通过数据库进行(例如,芹菜工作者直接在数据库中工作,因为它知道模型等...)。
我不确定这是否遵循微服务口号,但确实有效:)
答案 1 :(得分:0)
Celery的.send_task
或.signature
可能会有所帮助:
https://www.distributedpython.com/2018/06/19/call-celery-task-outside-codebase/