我们正在使用Sinatra和Sequel进行小型API实现。然而,我们遇到的问题是,在每个页面请求时,Sequel会打开与MySQL的新连接,并在它们超时之前保持打开状态,或者重新启动Apache。
关于如何重用连接的文档并不多,因此任何正确方向的帮助,解释和/或指示都会有所帮助。
答案 0 :(得分: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
答案 1 :(得分:1)
我们弄清楚我们做错了什么。这是相当愚蠢的,我们在Sinatra的过滤器中初始化了Sequel。
所以我们这样做:
DB = Sequel.mysql("...")
然后我们只使用DB
常量来使用续集。