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

ki1q1bka  于 2023-02-18  发布在  Python
关注(0)|答案(3)|浏览(108)

我正在Kubernetes上运行的服务API上使用python Locust包进行负载测试。
我在源代码中看到HttpUser使用requests.session.request()来发送请求。(这会导致所有请求都发往一个Pod,而不是分布在Kubernetes上的所有Pod上)我知道的在每个请求后关闭连接的唯一方法是在初始化requests.session时设置connection: close,在《蝗虫》中我是被抽象化了。
我试着在请求调用中添加headers={'connection':'close'},但是没有成功。所有的请求仍然发往同一个pod。有人知道如何在运行时更改这个设置吗?

monwx1rj

monwx1rj1#

也许您还可以使用User而不是HttpUser,因为HttpUser被认为可以在任务之间保持会话。
使用User代替HttpUser你需要导入请求和示例化它,但是默认情况下它不保留会话.如果你想保留会话,创建一个会话对象并用它调用.
例如

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

session 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
hs1rzwqc

hs1rzwqc2#

你可以试试

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

jmo0nnb33#

headers={'Connection':'close'}可以防止tls的持续运行。也许你需要清除请求之间的cookie?比如nginx发送带有相同uid cookie的请求到同一个线程。

相关问题