如何在使用池

时间:2016-09-13 10:09:21

标签: ruby postgresql sidekiq sequel

我正在使用Sequel gem和Postgres面临一些汇集问题。 我相信我的Sidekiq工作不会释放他们在游泳池中使用的连接。

使用以下方法启动Sidekiq时连接到数据库:

DB = Sequel.connect(db_uri, max_connections: 20)

我在考虑一些Sidekiq中间件,如下:

module Middleware
  class SequelDisconnector
    def call(*args)
      yield
    ensure
      DB.release_active_pool_connection
    end
  end
end

我知道有DB.disconnect但是完全脱离了数据库权限吗?我想确保我的工作人员释放其连接,同时不会杀死任何其他工作人员的连接。

有没有办法实现这一点,或者我的推理中存在某种缺陷?

1 个答案:

答案 0 :(得分:2)

首先,您需要了解您的工作人员不一定使用单个连接,但可能使用许多不同的连接,除非您专门通过Database#synchronize或{{将某些连接限制为单个连接。 1}}。

您不需要断开特定连接,因为预期连接将保留在Sequel的连接池中供以后使用。您是否认为应该断开连接并从池中删除连接?