2

小さな API 実装に Sinatra と Sequel を使用しています。ただし、問題は、すべてのページ リクエストで Sequel が MySQL への新しい接続を開き、タイムアウトするか、Apache を再起動するまで開いたままにすることです。

接続を再利用する方法に関するドキュメントはあまりないため、正しい方向へのヘルプ、説明、および/またはポインタが役立ちます。

4

2 に答える 2

1

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 
于 2009-07-25T11:35:38.150 に答える
1

私たちは何が間違っていたのかを理解しました。Sinatra の before フィルターで Sequel を初期化しました。

代わりに、次のようにします。

DB = Sequel.mysql("...")

次に、単にDB定数を使用して Sequel を使用します。

于 2009-07-26T21:29:45.623 に答える