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

如何在aws elastic bean上安装redis和celery

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