小さな API 実装に Sinatra と Sequel を使用しています。ただし、問題は、すべてのページ リクエストで Sequel が MySQL への新しい接続を開き、タイムアウトするか、Apache を再起動するまで開いたままにすることです。
接続を再利用する方法に関するドキュメントはあまりないため、正しい方向へのヘルプ、説明、および/またはポインタが役立ちます。
Sequelのものを小さなラッパーでラップし、次のようにこのラッパーを再利用します。
get '/api/:call' do
@@api ||= SApi.new
@@api.call(params[:call])
end
class SApi
def initialize
connect
end
def connect
@con = Sequel.connect("...")
end
def call(x)
#handle call using @con
end
end
または、終了したら@ con.disconnectを呼び出すか、ブロックを使用してSequel.connectを呼び出すことができます。
Sequel.connect("...") do |c|
# work with c
end #connection closed
私たちは何が間違っていたのかを理解しました。Sinatra の before フィルターで Sequel を初期化しました。
代わりに、次のようにします。
DB = Sequel.mysql("...")
次に、単にDB
定数を使用して Sequel を使用します。