首页 > 解决方案 > 删除弹性 beantalk EC2 实例后,芹菜任务和队列是否会中断?

问题描述

我有一个在多容器 Docker 平台的 Elastic Beanstalk 上运行的 Django 应用程序。所以每个 EC2 实例都有用于 Django、Celery、RabbitMQ 和 Nginx 的 Docker 容器。

当 EC2 实例由于自动缩放事件或不可变部署而被删除时,我担心 celery 任务。

我很好奇是否有其他人有解决上述问题的经验?以下是我正在考虑的一些解决方案的列表:

  1. 将 celery 代理更改为远程 ElastiCache Redis 实例。不确定这是否可行。

  2. 使用另一个库来替换可以将任务存储在数据库中的 Celery(例如,huey 或 apscheduler)。

  3. 从 celery 迁移到 AWS SQS + Elastic Beanstalk Worker。这意味着复制相同的代码库以同时部署到当前 Web 以及工作人员 Elastic Beanstalk。

还有其他想法或顾虑吗?

标签: pythondjangoamazon-web-servicesceleryamazon-elastic-beanstalk

解决方案


您是否需要为每个 EC2 实例提供单独的 Celery/Rabbit 实例?除非您将其存储在外部,否则删除兔子实例会杀死芹菜


推荐阅读