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

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

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

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

启动/停止/重启后台作业的最佳方法可以是通过init脚本完成这些任务。 启动实例时,可以将这些init脚本作为服务触发。 有关在此处为服务自定义ElasticBeanstalk容器的更多信息。

完成后,您可以通过创建实例的AMI来冻结init脚本,然后使用自动缩放function从此自定义AMI启动实例。

希望这可以帮助。

我创建了一个gem, Active Elastic Job ,作为在Elastic Beanstalk上运行的Rails应用程序的后台作业的解决方案。 它利用Elastic Beanstalk 工作线程环境 ,这些环境旨在用于Elastic Beanstalk应用程序的后台任务。

优点是:

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

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