python - 删除弹性 beantalk EC2 实例后,芹菜任务和队列是否会中断?
问题描述
我有一个在多容器 Docker 平台的 Elastic Beanstalk 上运行的 Django 应用程序。所以每个 EC2 实例都有用于 Django、Celery、RabbitMQ 和 Nginx 的 Docker 容器。
当 EC2 实例由于自动缩放事件或不可变部署而被删除时,我担心 celery 任务。
删除实例时,芹菜队列中的当前任务会丢失吗?
删除实例时可以中断正在运行的 celery 任务吗?
每个启动的新实例都会调用 Celery beat schedule (cron),从而导致重复调用。
我很好奇是否有其他人有解决上述问题的经验?以下是我正在考虑的一些解决方案的列表:
将 celery 代理更改为远程 ElastiCache Redis 实例。不确定这是否可行。
使用另一个库来替换可以将任务存储在数据库中的 Celery(例如,huey 或 apscheduler)。
从 celery 迁移到 AWS SQS + Elastic Beanstalk Worker。这意味着复制相同的代码库以同时部署到当前 Web 以及工作人员 Elastic Beanstalk。
还有其他想法或顾虑吗?
解决方案
您是否需要为每个 EC2 实例提供单独的 Celery/Rabbit 实例?除非您将其存储在外部,否则删除兔子实例会杀死芹菜
推荐阅读
- java - 在springboot中传递模板时发生错误
- python - 如何从课程模型中修复 ManyToManyDescriptor - 视图?
- swift - Swift DynamicFetchView fetchlimit
- java - Java Servlet NumberFormatException
- html - 使弹性项目平均增长(并扩展父容器)
- java - 按添加时间排序列表
- windows - 批量打开 & 重启 Explorer.exe & 然后恢复所有窗口
- javascript - 当放大触摸设备时,页面放大而不是地图传单
- azure-iot-edge - 如何允许 Azure IoT 边缘模块执行 http 请求?
- css - 渐变边框有切片,但仍然只显示角落