Продолжение + Sinatra + Phusion Passenger + Управление подключением к MySQL

StackOverflow https://stackoverflow.com/questions/1106940

  •  12-09-2019
  •  | 
  •  

Вопрос

Мы используем 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 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top