Locust默认的HTTP客户端使用python-requests。因为requests是一个维护良好的python程序包,它提供了许多python开发人员都熟悉的优质API。因此,在许多情况下,建议使用使用请求的默认HttpLocust
。
但是,如果计划运行大规模的测试,Locust提供了一个替代的HTTP 客户端 FastHttpLocust
,它使用geventhttpclient而不是requests。
该客户端的速度明显提高,其性能是HTTP-requests的5 ~ 6倍。这并不一定意味着每个CPU内核可以模拟的用户数量将自动增加5 ~ 6倍,因为这还取决于负载测试脚本。
总之,如果你的Locust脚本在执行HTTP-requests时花费了大量的CPU时间,那么你可能会看到显著的性能提升。
代替HttpLocust的子类是FastHttpLocust:
from locust import TaskSet, task, between
from locust.contrib.fasthttp import FastHttpLocust
class MyTaskSet(TaskSet):
@task
def index(self):
response = self.client.get("/")
class MyLocust(FastHttpLocust):
task_set = MyTaskSet
wait_time = between(1, 60)
注意
与默认python-requests的HttpLocust相比,FastHttpLocust使用一个完全不同的API实现另一个HTTP client 。因此,取决于如何使用HttpClient,FastHttpLocust可能无法替代HttpLocust。
在FastHttpLocust的客户端实现中,SSL域名检查被关闭。因此,它将允许通过无效的SSL证书而不会产生任何问题。
classFastHttpSession(base_url, **kwargs)
init(base_url, **kwargs) | x.init(…) 初始化X,详见 help |
get(path, **kwargs) | 发送GET请求 |
head(path, **kwargs) | 发送HEAD请求 |
options(path, **kwargs) | 发送OPTION请求 |
patch(path, data=None, **kwargs) | 发送PATCH请求 |
post(path, data=None, **kwargs) | 发送POST请求 |
put(path, data=None, **kwargs) | 发送PUT请求 |
request(method, path, name=None, data=None, catch_response=False, stream=False, headers=None, auth=None, **kwargs)
发送HTTP请求并返回
locust.contrib.fasthttp.FastResponse
对象.
Parameters:
classFastResponse(ghc_response, request=None, sent_request=None)
content
Unzips, 如有必要,并缓冲接收到的Body. 小心大文件!
headers= None
类似于Dict的对象,包含响应标头
text
以解码字符串的形式返回响应的文本内容(python2上的unicode)