如何在python蝗虫中关闭TCP连接(requests.session)

时间:2020-06-04 10:30:29

标签: python kubernetes tcp python-requests locust

我正在使用在Kubernetes上运行的服务API上的python Locust软件包进行负载测试。

我在源代码中看到HttpUser使用requests.session.request()发送请求。默认情况下,requests.session使连接保持活动状态(这会使所有请求转到一个Pod,而不是分布在Kubernetes上的所有Pod中)。我知道唯一的方法是在初始化connection: close时在设置每个requests.session后设置headers={'connection':'close'},这在Locust中是从我这里抽象出来的。

我尝试在请求调用中添加mvn clean package,但没有成功。所有请求仍将发送到同一吊舱。有人知道我如何在运行时更改此设置吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试

request = requests.session.request()
request.close()

答案 1 :(得分:0)

也许您也可以使用 User 而不是 HttpUser,因为 HttpUser 被认为保持会话 betweek 任务。

使用 User 而不是 HttpUser 您需要导入请求并对其进行实例化,但默认情况下它不会保留会话。如果你想保持会话创建一个会话对象并使用它进行调用。

例如

class Login(HttpUser)
    @task
    def activity():
        self.client.get('/url')

会话 betweek 共享此任务 ID 的每次运行。

import requests

class Login(User)
    @task
    def activity():
        answer = requests.get('/')
        answer2 = requests.get('/')
        #answer and answer2 doesn't share session, every run of task doesn't share session
        session = requests.Session()
        answer3 = session.get('/')
        answer4 = session.get('/')
        #answer3 and 4 share same session, every run of task doesn't share session
相关问题