1

我有一个托管在 Heroku 中的 Rails 3.0 应用程序。我想设置一个不同的 Rails 服务器来运行繁重的后端作业(扫描用户配置文件、项目并创建推荐并将它们存储在 Redis 数据库中),以便它:

  • 不会阻塞我的前端服务器(即,如果我在同一个前端 Rails 服务器上运行后端进程,则响应用户请求等需要更长的时间)
  • 允许我拥有 Rails 类和方法

我的理解是:

  • 添加更多的工人测功机不会分离前端和后端进程
  • 添加 When 或 Delayed_Job gem 将不允许我在单独的后端服务器上运行。

我认为 Rails 应该经常出现这种情况。我该怎么办?

非常感谢。

4

1 回答 1

1
  • “阻塞”“前端数据库”是什么意思?你可能只有一个普通的数据库,你应该实现缓存和深思熟虑的查询以避免对它征税。将 Resque 与 Redis 一起用于任务以避免增加 SQL 数据库的负载。
  • 您可以通过加载环境来访问 rake 任务中的“Rails 类和方法”。例如:task :do_this => :environment { ... }
  • 每个 dyno 都独立于其他所有 dyno,无论它们是 web worker(可用于 HTTP 请求)还是 worker dyno(用于其他任何东西)。

您真的只需要创建 rake 任务并将任何其他服务(如 Clockwork)添加到您的 Procfile(仅限 Cedar 堆栈)即可让这一切在 Heroku 上运行。

于 2012-04-15T22:00:44.037 回答