使用 Django 在 Elastic Beanstalk 上运行 Python 的 Celery

Posted

技术标签:

【中文标题】使用 Django 在 Elastic Beanstalk 上运行 Python 的 Celery【英文标题】:Running Python's Celery on Elastic Beanstalk with Django 【发布时间】:2012-09-30 14:01:36 【问题描述】:

我正在考虑迁移到 Elastic Beanstalk(考虑到定价)。问题是我不知道如何在部署到服务的 python 应用程序(在我的例子中是 Django)上设置 Celery。有没有人设法在 Elastic Beanstalk 上设置芹菜?如果是这样,请告诉我您是如何做到的以及您使用了哪些工具。

【问题讨论】:

【参考方案1】:

使用 SQS 服务。阅读:Celery with Amazon SQS

还有这个:

http://docs.celeryproject.org/en/latest/getting-started/brokers/sqs.html

【讨论】:

你设法让它工作了吗?我的问题是:如何在 EB 上运行 celery? 您实际上不应该在 EB 上运行其他服务,例如 Celery。它仅用于运行您的主应用程序。您可能应该在单独的 EC2 实例上运行您的 Celery 服务。反正我就是这么做的。 我不确定 Beanstalk 自最初发布以来是否发生了很大变化。查看他们的文档看起来您应该能够使用 beanstalk 运行守护进程。您可以创建一个配置了 celery 守护程序的自定义 AMI。我能够让它与使用 SQS 作为代理的自定义 AMI 一起工作。 还有一种方法可以在不创建自定义 AMI 的情况下执行此操作,请参阅我对类似问题的回答:***.com/questions/14761468 如果一个新实例由于 EB 中的自动缩放而启动,那么该新实例也将运行 celery worker,在这种情况下,是否有可能在 SQS 中多次执行同一消息?

以上是关于使用 Django 在 Elastic Beanstalk 上运行 Python 的 Celery的主要内容,如果未能解决你的问题,请参考以下文章

使用环境变量在 AWS Elastic Beanstalk 上使用 django 运行 celery

AWS Elastic Beanstalk 上禁止使用 Django 403

将 Django 部署到 Elastic Beanstalk,迁移失败

使用 Django 在 Elastic Beanstalk 上运行 Python 的 Celery

使用 Django 在 Elastic Beanstalk 上运行 Python 的 Celery

在 AWS Elastic Beanstalk 上使用 Docker 进行 Django 迁移