我正在使用 Locust 进行负载测试,我正在尝试实现连接生命周期,以便连接池中的连接在连接创建后经过一定时间后在客户端关闭。此功能存在于 C# 中,带有 PooledConnectionLifetime。
我一直无法使用 Locust 使用的连接库 urllib3 复制连接生命周期功能。我有一个使用 HttpUser 的客户端脚本。让 HttpUser 使用 PoolManager 子类后,我没有成功。该子类使用 HttpConnection 和 HttpsConnection 子类,这些子类具有尝试实现连接生命周期功能的覆盖方法。似乎甚至没有使用子类,因为它们在 Locust 客户端运行时不会产生任何日志。
有没有办法将连接生命周期功能添加到 urllib3,或者其他可以使用的解决方案?
编辑:我尝试利用
conn.timeout.get_connect_duration()
method 实现功能。我不确定是否只在第一次使用start_connect()
时调用_make_request
,或者每次从池中取出时调用。
包
urllib3
有一个 Timeout
对象,可以将其分配给连接池以强制关闭长时间运行的连接。
来自官方文档的例子
timeout = Timeout(connect=2.0, read=7.0)
http = PoolManager(timeout=timeout)
response = http.request('GET', 'http://example.com/')
从
locust
源代码看来,HttpUser
有一个可选参数pool_manager
。此参数默认为 None
,但可以分配一个 PoolManager
对象,如 urllib3
. 所定义