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

如何在python蝗虫中关闭TCP连接(requests.session),python,kubernetes,tcp,python-requests,locust,Python,Kubernetes,Tcp,Python Requests,Locust,我正在Kubernetes上运行的服务API上使用python蝗虫包进行负载测试 我在源代码中看到,HttpUser使用requests.session.request()发送请求。默认情况下,requests.session使连接保持活动状态(这会导致所有请求都发送到一个pod,而不是在Kubernetes上的所有pod中分发)。我知道在每次请求后关闭连接的唯一方法是在初始化请求时设置连接:close。session,它在蝗虫中从我这里抽象出来 我尝试在请求调用中添加headers={'con

我正在Kubernetes上运行的服务API上使用python蝗虫包进行负载测试

我在源代码中看到,
HttpUser
使用
requests.session.request()
发送请求。默认情况下,
requests.session
使连接保持活动状态(这会导致所有请求都发送到一个pod,而不是在Kubernetes上的所有pod中分发)。我知道在每次请求后关闭连接的唯一方法是在初始化
请求时设置
连接:close
。session
,它在蝗虫中从我这里抽象出来

我尝试在请求调用中添加
headers={'connection':'close'}
,但没有成功。所有的请求仍然发送到同一个pod。有人知道如何在运行时更改此设置吗?

您可以试试

request = requests.session.request()
request.close()
你可以试试

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

也许您也可以使用User而不是HttpUser,因为HttpUser被认为是在每周任务之间保持会话

使用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

也许您也可以使用User而不是HttpUser,因为HttpUser被认为是在每周任务之间保持会话

使用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