我如何在任何给定时间检查池中活动的 sqlalchemy 连接数?

How could I check the number of active sqlalchemy connections in a pool at any given time?

我遇到这样一种情况,由于高流量负载,sqlalchemy 运行不时保持活动连接,我想 运行 一些测试来验证和优化池每个用例的参数。但是,我找不到一种直接轮询活动连接数的方法。

当前设置在线:

args = ...
mapping = {
        'pool_size': 10,
        'max_overflow': 10,
        'pool_timeout': 30,
        'pool_recycle': 1800
    }
engine = sqlalchemy.create_engine(*args, **mapping)

MySQL 服务器上的最大连接数设置为 200,共有大约 20 个 Web 服务器和 celery boxes 连接到它。

默认 QueuePool 有一个 status 方法 returns the following:

def status(self):
        return "Pool size: %d  Connections in pool: %d "\
            "Current Overflow: %d Current Checked out "\
            "connections: %d" % (self.size(),
                                 self.checkedin(),
                                 self.overflow(),
                                 self.checkedout())

Pool.checkedout() 将 return 签出的连接数。