+ Sequel Sinatra + Phusion passagers + Gestion des connexions MySQL
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.
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