【问题标题】:How can I run Rails background jobs with Resque on AWS Elastic Beanstalk?如何在 AWS Elastic Beanstalk 上使用 Resque 运行 Rails 后台作业?
【发布时间】: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 配置,根据文档,它在部署应用程序之前运行所有命令。我会让你知道我发现了什么。

标签: ruby-on-rails amazon-web-services resque amazon-elastic-beanstalk


【解决方案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 启动具有自动扩展功能的实例来冻结您的初始化脚本。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 2016-11-25
    • 2016-04-10
    • 1970-01-01
    • 2013-05-06
    • 2016-11-28
    • 2014-11-07
    • 2016-11-26
    • 2016-08-05
    相关资源
    最近更新 更多