Celery 可以在 Elastic Beanstalk 上运行吗?
Posted
技术标签:
【中文标题】Celery 可以在 Elastic Beanstalk 上运行吗?【英文标题】:Can Celery run on Elastic Beanstalk? 【发布时间】:2015-01-07 04:43:39 【问题描述】:我正在寻找一种在 Elastic Beanstalk 环境中运行 Celery 的直接方法。这是否存在,还是我需要改用 SQS?
我尝试在 .config 文件中添加一行,但效果不佳。这是我的 .config 文件:
container_commands:
01_syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02_collectstatic:
command: "./manage.py collectstatic --noinput"
03_migrate:
command: "./manage.py migrate --noinput"
04_start_celery:
command: "./manage.py celery worker &"
当我 ssh 到 EC2 服务器并运行 ps -ef | grep celery
时,它显示 Celery 没有运行。
任何帮助表示赞赏。谢谢!
【问题讨论】:
你能扩展一下“没有好的结果”吗?结果如何?有什么错误信息可以告诉我们吗? 好点。我更新了问题的详细信息。芹菜根本没有在盒子上运行(我看不到任何错误)。 【参考方案1】:Celery 没有显示,因为容器命令是在部署期间重新启动网络服务器之前运行的。基本上,您的芹菜工人在机器重新启动后会被消灭。
我建议使用部署后挂钩来启动 celery。
见http://junkheap.net/blog/2013/05/20/elastic-beanstalk-post-deployment-scripts/和How do you run a worker with AWS Elastic Beanstalk?
【讨论】:
实际上,我能够使用github.com/rfk/django-supervisor 以一种更简洁的方式在 Elastic Beanstalk 上运行它,以将 celery worker 作为守护进程运行,并在部署过程中持续存在。不过,我确实必须添加一些部署后挂钩以确保重新启动此服务。以上是关于Celery 可以在 Elastic Beanstalk 上运行吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 Elastic Beanstalk 上自动启动 Celery
Elastic Beanstalk 上 Django/Celery 的权限问题
如何在 AWS Elastic Beanstalk 上运行 celery worker?
使用环境变量在 AWS Elastic Beanstalk 上使用 django 运行 celery