【发布时间】:2014-06-06 13:43:47
【问题描述】:
我主要将 Node 用于后端服务,但使用 Ruby 1.9.3 维护 Rails 3.2 API。最近我们意识到,在某些极端情况下,我们的FoosController#create 控制器方法花费了很长时间,以至于客户端在收到响应之前就超时了。我有类似的东西
def create
if check_for_bad(params) # Validation step
return bad_params_error # Return 400 error
end
Foo.create(params) # Need to move this to a parallel thread
output = { status: 200, message: 'OK' }
return render json:output
end
客户端在初始参数检查后不需要知道任何错误,所以我想在运行Foo#create 之前返回响应,但我确实需要将params 传递给该方法。我试过把它放在after_filter 方法中(我在尝试after_action 时得到undefined method)。
看起来这应该很容易,可能使用纤维或构建在其上的宝石,但我对可用的东西还不够熟悉,无法确保我正在做的事情不会造成比我更多的问题解决。
提前感谢您的帮助。
【问题讨论】:
-
看看sidekiq`:github.com/mperham/sidekiq
-
感谢@BroiSatse -- Sidekiq 成功了。如果您想更详细地回答,我会批准。否则我会在明天写出可行的方法,以防其他人遇到类似问题。
标签: ruby-on-rails ruby ruby-on-rails-3