Продолжение + Sinatra + Phusion Passenger + Управление подключением к MySQL
Вопрос
Мы используем Sinatra и Sequel для небольшой реализации API.Однако проблема, с которой мы сталкиваемся, заключается в том, что при каждом запросе страницы Sequel открывает новые подключения к MySQL и сохраняет их открытыми до истечения времени ожидания или перезапуска Apache.
Существует не так много документации о том, как повторно использовать соединения, поэтому любая помощь, пояснения и / или указатели в правильном направлении помогли бы.
Решение 2
Мы выяснили, что мы делали неправильно.Это было довольно глупо, мы инициализировали Продолжение в фильтре before в Sinatra.
Поэтому вместо этого мы делаем:
DB = Sequel.mysql("...")
Затем мы просто используем DB
константа для использования 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