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
config/development.rb
config.middleware.use "MyMiddleware"
しかし、それは機能していません。タイムアウトが発生したときに、どこでもラックタイムアウトが例外をスローしています。