【问题标题】:Celery in a microservice architecture微服务架构中的 Celery
【发布时间】:2021-11-26 10:23:10
【问题描述】:

我目前正在为我的项目开发微服务架构,我的所有服务 app1、app2、... 都使用 celery 和 celery beat。

是否可以将我的所有应用程序链接到一个 celery 实例?如果是的话,你能给我一个 docker-compose 的例子吗?或者我应该为我项目中的每个应用或服务创建一个 celery 实例?

【问题讨论】:

  • 据我们所知,每个服务都有自己的 celery 实例。因为当您可能将任务从不同的服务发送到同一个队列时,这将是不安全的,这些服务将由错误的工作人员处理。如果这是一个宠物项目,我们正在使用 Camunda/Zeebe 云微服务编排器/工作流引擎,它非常酷:D,也许这是您想要的解决方案。
  • 谢谢,所以我应该为每个服务创建它的 celery worker,没有任何工具可以同时处理多个 celery 实例吗?我也看看这些技术
  • 为了管理多个 celery 实例,我发现了另一个堆栈溢出线程 stackoverflow.com/questions/58747174/… 不幸的是我没有这方面的经验,我会说是的,你必须有多个 celery 实例
  • 我相信是这样,每个实例都在管理一个应用程序的任务,您还需要指定自己的队列以避免冲突。另一种解决方案是制作具有多个队列的混合工作人员,无论如何谢谢

标签: python docker-compose celery microservices


【解决方案1】:

每个 celery 实例都在管理一个应用程序的任务,还需要指定自己的队列以避免冲突。如果在单个应用中需要多个队列,另一种解决方案是创建具有多个队列的混合工作线程。

worker:
build:
  context: .
  dockerfile: Dockerfile
command: ['celery', '--app=app.celery', 'worker', '--loglevel=INFO', 
           '--queues=monitor']
environment:
  - BROKER_URL=amqp://admin:pass@rabbitmq:5672//
  - RESULT_BACKEND=redis://redis:6379/0
  - C_FORCE_ROOT=true
volumes:
  - /app/:/app/
depends_on:
  - rabbitmq
  - redis

【讨论】:

    猜你喜欢
    • 2015-12-26
    • 2021-11-02
    • 2017-03-19
    • 2018-05-12
    • 1970-01-01
    • 2014-01-08
    • 2016-11-23
    • 2018-03-29
    相关资源
    最近更新 更多