7

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"

しかし、それは機能していません。タイムアウトが発生したときに、どこでもラックタイムアウトが例外をスローしています。

4

1 に答える 1