Question

Nous utilisons Sinatra et Sequel pour une petite implémentation de l'API. Le problème que nous avons est cependant que sur chaque demande de page Sequel ouvre de nouvelles connexions à MySQL, et les garde ouverts jusqu'à ce qu'ils timeout, ou que vous redémarrez Apache.

Il n'y a pas beaucoup de documentation sur la façon de réutiliser les connexions, de sorte que toute aide, des explications et / ou des pointeurs dans la bonne direction serait utile.

Était-ce utile?

La solution 2

Nous avons compris ce que nous faisions mal. Il a été assez stupide, nous avons initialisé Sequel dans un filtre avant Sinatra.

Au lieu nous faisons:

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

Ensuite, nous utilisons simplement le DB constant d'utiliser Sequel.

Autres conseils

J'Enveloppez la substance Sequel dans un petit emballage et de réutiliser cette enveloppe, comme ceci:

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

Vous pouvez appeler @ con.disconnect une fois que vous avez terminé ou appelez Sequel.connect en utilisant un bloc:

Sequel.connect("...") do |c|
   # work with c
end #connection closed 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top