ruby-on-rails - 我应该在哪里运行预定的后台作业?

标签 ruby-on-rails amazon-web-services scheduled-tasks background-process aws-lambda

在我的公司,我们在 aws ebs 中有常规应用程序以及一些后台作业。问题是,这些工作开始变得越来越繁重,我们正在考虑将它们与应用程序分开。问题是:我们应该在哪里做?

我们考虑在 aws lambda 中完成此操作,但随后我们必须将 Rails 代码移植到 python、node 或 java,这似乎需要大量工作。为此还有哪些其他选择?我们是否应该为这些工作创建另一个 ec2 环境?提前致谢。

编辑:我正在使用 shoriken gem:http://github.com/phstc/shoryuken与 SQS 集成。但目前存在一些内存泄漏,我的应用程序有时会出现故障,我不知道内存泄漏是否是原因。我们已经将应用程序分为 EBS 中的 API 部分和 S3 中的前端部分。

最佳答案

通常,只是另一个带有 Rails 应用程序副本的 EC2 实例,您可以运行 rake resque:work 或其他内容,而不是使用 rails 来启动 Web 服务器您的作业运行器启动命令是。两者将共享相同的 Redis 实例和数据库,以便您的 Web 服务器将作业写入队列,然后工作线程拾取它们并运行它们。

如果您需要更多工作人员,只需添加更多指向同一 Redis 实例的 EC2 实例即可。我建议按队列名称分隔您的工作,以便一名工作人员可以处理快速的内容,例如电子邮件发送,其他人可以执行长时间运行或缓慢的工作。

关于ruby-on-rails - 我应该在哪里运行预定的后台作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40424364/

相关文章:

ruby-on-rails - 在 ruby​​ on rails 中将用户 ID 作为外键存储到另一个表中的基本规则

amazon-web-services - LaunchConfiguration 用户数据与 AWS::CloudFormation::Init

windows - 如何在 Windows 命令提示符下每 5 分钟安排一个任务?

ruby-on-rails - Rails 插件在启动时运行迁移?

ruby-on-rails - 如何通过 Rails App 检查 postgres 服务器是否启动?

amazon-web-services - AWS 的 169.254.169.254 IP 地址有什么特别之处?

iOS:从 AWS SNS 向 APNS 发送推送通知

c# - 启动远程计划任务

javascript - Node.js mongodb 多个计划任务

ruby-on-rails - session 可以在Heroku上与多个Web dynos一起使用吗?