如何在 AWS Elastic Beanstalk 上使用 Resque 运行 Rails 后台作业?

Posted

技术标签:

【中文标题】如何在 AWS Elastic Beanstalk 上使用 Resque 运行 Rails 后台作业?【英文标题】:How can I run Rails background jobs with Resque on AWS Elastic Beanstalk? 【发布时间】:2013-01-10 10:16:42 【问题描述】:

我在 AWS Elastic Beanstalk 平台上运行我的 rails 应用程序,该平台运行具有 Auto Scaling 和 Elastic Load Balancing 的单个 EC2 实例。

我想知道如何在 Elastic Beanstalk 上运行 resquedelayed_jobsidekicq 或其他一些后台作业解决方案。

Elastic Beanstalk 上的后台作业有哪些可能的选项?

【问题讨论】:

检查this @Viren,这与 Elastic Beanstalk 无关。我一直在尝试自己进行设置,但我看到的唯一内容是 container_commands 配置,根据文档,它在部署应用程序之前运行所有命令。我会让你知道我发现了什么。 【参考方案1】:

我创建了一个 gem,Active Elastic Job,作为在 Elastic Beanstalk 上运行的 Rails 应用程序的后台作业的解决方案。 它使用 Elastic Beanstalk worker environments,旨在用于 Elastic Beanstalk 应用程序的后台任务。

优点是:

您可以使用相同的代码库来执行后台作业,无需将应用程序的专用版本分支出来以在工作环境中运行, 利用 Elastic Beanstalk 自动缩放功能, 无需设置外部 EC2 实例或服务即可运行 像resquesidekiq 这样的队列后端, 无需自定义 Elastic Beanstalk 容器。 保持 Elastic Beanstalk 的预定义基础架构的简单性。

但是,此 gem 仅与 Rails >= 4.2 应用程序兼容。

【讨论】:

嗨@tawan,它可以与 Resque 一起使用吗?【参考方案2】:

启动/停止/重新启动后台作业的最佳方式是通过这些任务的初始化脚本。当实例启动时,您可以将这些初始化脚本作为 services 触发。有关为服务自定义 ElasticBeanstalk 容器的更多信息here。

完成后,您可以通过为您的实例创建一个 AMI,然后通过此自定义 AMI 启动具有自动扩展功能的实例来冻结您的初始化脚本。

希望这会有所帮助。

【讨论】:

以上是关于如何在 AWS Elastic Beanstalk 上使用 Resque 运行 Rails 后台作业?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Elastic Beanstalk 上修改 Nginx 配置

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 中更改数据库配置

如何在 AWS Elastic Beanstalk 中选择特定平台?

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?