我正在使用在Kubernetes上运行的服务API上的python Locust软件包进行负载测试。
我在源代码中看到HttpUser
使用requests.session.request()
发送请求。默认情况下,requests.session
使连接保持活动状态(这会使所有请求转到一个Pod,而不是分布在Kubernetes上的所有Pod中)。我知道唯一的方法是在初始化connection: close
时在设置每个requests.session
后设置headers={'connection':'close'}
,这在Locust中是从我这里抽象出来的。
我尝试在请求调用中添加mvn clean package
,但没有成功。所有请求仍将发送到同一吊舱。有人知道我如何在运行时更改此设置吗?
答案 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