python - 删除 Elastic beanstalk EC2 实例时,celery 任务和队列是否会中断?

标签 python django amazon-web-services celery amazon-elastic-beanstalk

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

当 EC2 实例由于自动扩展事件或不可变部署而被删除时,我对 celery 任务感到担忧。

  • 当实例被删除时,celery队列中的当前任务会丢失吗? 删除了?

  • 正在运行的 celery 任务是否可以在实例删除时中断?

  • Celery 节拍计划 (cron) 将从每个新实例中调用 启动,导致重复调用。

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

  1. 将 celery 代理更改为远程 ElastiCache Redis 实例。不是 当然这会起作用。

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

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

还有其他想法或疑虑吗?

最佳答案

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

关于python - 删除 Elastic beanstalk EC2 实例时,celery 任务和队列是否会中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59065099/

相关文章:

python - 如何将 HTML 与 Django 集成?

amazon-web-services - 如何使用 key 和 secret 访问 s3 存储桶?

python - 修复 COMPSs 跟踪错误 : PAPI_read failed for thread X evtset X (papi_hwc. c:*)

python - 如果没有找到 Object.get() 抛出异常

django - DRF Serializer 可读 - 可写非模型字段

python - 编写管理器来过滤查询集结果

reactjs - 使用 axios 将文件上传到 S3 存储桶时出现 403

ios - 创建用于 AWS DynamoDB 的唯一主键

python - 在 django 上使用 folium 的最佳实践

python - 如何在 Docker Compose 中通过 Privoxy 将 Scrapy 与 Splash 和 Tor 结合使用