我已经安装了 rack-timeout gem 并在初始化程序中创建了 rack_timeout.rb。我在 rack_timeout.rb 中设置了 Rack::Timeout.service_timeout = 1。我想限制 rack-timeout 以在其他控制器超时时停止执行比 api 中的控制器。只有 api 控制器的执行应该停止。我在 lib 中创建了一个名为 my_middleware.rb 的自定义中间件
class MyMiddleware < Rack::Timeout
def initialize(app, options = {})
@app = app
@exclude = options[:exclude]
end
def call(env)
if env['PATH_INFO'].include? "api"
super(env)
else
@app.call(env)
end
end
end
配置/开发.rb
config.middleware.use "MyMiddleware"
但它不起作用。发生超时时,任何地方的机架超时都会引发异常。