我正在使用Locust进行负载测试,并尝试实现连接生命周期,以便在连接池中的连接在连接创建后经过一定时间后在客户端关闭。此功能存在于C#中的PooledConnectionLifetime。
我无法使用Locust使用的连接库urllib3复制连接生命周期功能。我有一个使用HttpUser的客户端脚本。在让HttpUser使用PoolManager子类后,我没有成功。子类使用HttpConnection和HttpsConnection子类,这些子类已经覆盖了试图实现连接生命周期功能的方法。看起来甚至没有使用子类,因为它们在Locust客户端运行时不生成任何日志。
有没有一种方法可以将连接生存期功能添加到urllib3,或者其他可以使用的解决方案?
编辑:我尝试利用conn.timeout.get_connect_duration()
方法来实现该功能。我不确定start_connect()
是否仅在第一次使用_make_request
时调用,还是每次从池中取出时调用。
1条答案
按热度按时间cig3rfwq1#
包
urllib3
有一个Timeout
对象,可以将其分配给连接池以强制关闭长时间运行的连接。示例
Locust实现
从
locust
源代码中可以看出,HttpUser
有一个可选参数pool_manager
。该参数默认为None
,但可以根据urllib3
的定义分配一个PoolManager
对象。文档
*urllib3.util.Timeout