我有一个在多容器 Docker 平台中的 Elastic Beanstalk 上运行的 Django 应用程序。因此,每个 EC2 实例都有用于 Django、Celery、RabbitMQ 和 Nginx 的 Docker 容器。
当 EC2 实例由于自动扩展事件或不可变部署而被删除时,我对 celery 任务感到担忧。
当实例被删除时,celery队列中的当前任务会丢失吗? 删除了?
正在运行的 celery 任务是否可以在实例删除时中断?
Celery 节拍计划 (cron) 将从每个新实例中调用 启动,导致重复调用。
我很好奇是否还有其他人有解决上述问题的经验?以下是我正在考虑的一些解决方案的列表:
将 celery 代理更改为远程 ElastiCache Redis 实例。不是 当然这会起作用。
使用另一个库来替换 Celery,它可以将任务存储在 DB(例如huey或apscheduler)。
从 celery 迁移到 AWS SQS + Elastic Beanstalk Worker。那 意味着复制相同的代码库以部署到两个 当前网络以及工作人员 Elastic Beanstalk。
还有其他想法或疑虑吗?
最佳答案
您是否需要为每个 EC2 实例单独的 Celery/Rabbit 实例?删除兔子实例会杀死 celery ,除非将其存储在外部
关于python - 删除 Elastic beanstalk EC2 实例时,celery 任务和队列是否会中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59065099/