2

我们将 Sinatra 和 Sequel 用于小型 API 实现。然而,我们遇到的问题是,在每个页面请求上,Sequel 都会打开与 MySQL 的新连接,并让它们保持打开状态,直到它们超时,或者您重新启动 Apache。

关于如何重用连接的文档并不多,因此任何帮助、解释和/或正确方向的指示都会有所帮助。

4

2 回答 2

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 
于 2009-07-25T11:35:38.150 回答
1

我们发现我们做错了什么。这是相当愚蠢的,我们在 Sinatra 的前置过滤器中初始化了 Sequel。

所以我们这样做:

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

然后我们简单地使用DB常量来使用Sequel。

于 2009-07-26T21:29:45.623 回答