Locust环境搭建及报错解决

本文详细记录了在Windows环境下搭建Locust性能测试环境的过程,包括解决常见问题如无法找到vcvarsall.bat、openssl/opensslv.h文件缺失、第三方库版本不匹配、SSL证书验证失败及IPv6访问等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Locust环境搭建:
pypi.python.org下载安装第三方插件cryptography、anslcrypto、pyzmq、msgpack-python、gevent、cffi、greenlet、locustio
安装时看报错日志,根据日志安装第三方库,可通过离线安装tar.gz包的源码,但有时安装会报错,建议https://pypi.python.org/simple下直接下载第三方库的whl文件,pip install *.whl 进行在线安装能省去不少麻烦。
注意:一定要安装插件依赖的对应版本。

报错解决:
windows下locust踩到的坑总结,每个问题让人奔溃,现在终于解决了:
一、
报错:Unable to find vcvarsall.bat
出现原因:
msvc9compiler.py从sys.version里提取MSVC的版本号,但是在注册表中并没有根据版本号找到vcvarsall.bat,在系统的环境变量中也没有找到版本号对应的路径。后来我根据版本号,在环境变量中添加了路径,但因为msvc9compiler.py主要是针对VS2008和VS2010所做的路径识别,因此还是不能正确地找到vcvarsall.bat。
解决方法:

下载VS2010并安装。

设置python安装路径...\Lib\distutils目录下有个msvc9compiler.py获取vcvarsall.bat的路径,先在本地计算机找到vcvarsall.bat的位置path,然后直接在find_vcvarsall(version)函数中返回vcvarsall.bat的绝对路径。

vcvarsall = path
return vcvarsall

二、
报错:Fatal error C1083: Cannot open include file: 'openssl/opensslv.h‘
解决方法:
1、先检查安装的openssl.
OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。例如 http://slproweb.com 下载安装OPENSSL。
设置环境变量,例如工具安装在C:\OpenSSL-Win64,则将C:\OpenSSL-Win64\bin;复制到Path中

2、然后将lib和include包copy到Python安装对应目录下:
Copy "openssl" folder from C:\OpenSSL-Win32\include\ to \Pyhton27\include\
and copy all libs from C:\OpenSSL-win32\lib to \Python27\Libs\
cmd下设置:
set LIB=C:\OpenSSL-win64\lib;%LIB%
set INCLUDE=C:\OpenSSL-win64\include;%INCLUDE%

三、
安装第三方库报错:如cffi-1.11.5-cp37-cp37m-win64.whl is not a supported wheel on this platform.
出现原因:安装的不是对应python版本的库,下载的库名中cp37代表python3.7,其他同理。
python查看版本为32bit.
Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
解决方法:https://pypi.python.org/simple/cffi网站下载cffi-1.11.5-cp27-cp27m-win32.whl

四、
问题描述:SSL环境和locust环境都装好无报错之后,locust模块请求https协议接口,不论POST还是GET都提示错误:
SSLError(Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),))",),)
解决方法:
查官网locust.io,终于找到解决方法:https://docs.locust.io/en/latest/api.html
request(method, url, name=None, catch_response=False, **kwargs)
Constructs and sends a requests.Request. Returns requests.Response object.
利用verify参数,直接在POST/GET请求添加verify = False参数(self.client.get("/api",verify=False)),搞定,这是HTTPS网站所做的SSL证书认证,默认是True的,设置为False之后对测试没有影响;
当然如果知道证书的路径,应该也可以用cert设置.pem文件的路径,也可以解决。

五、
问题描述:浏览器中打开127.0.0.1:8089失败
出现原因:windows cmd下启动locust :locust -f test.py --host=https://www.baidu.com,
netstat -ano |findstr 8089查看端口绑定在[::]:8089
解决方法:浏览器中需访问ipv6本地地址:http://[::1]:8089/,访问成功

 

如有转载请注明原文出处,谢谢!

转载于:https://www.cnblogs.com/xiatian09/p/9761883.html

<think>好的,我现在需要解决用户导入HttpLocust时遇到的错误。用户已经安装Locust,但在导入HttpLocust时出现了问题。首先,我得回想一下Locust的版本更新历史。 记得Locust在1.0版本之后进行了较大的API调整,很多旧的类名被替换了。比如,HttpLocust被重命名为HttpUser,而原来的Locust类现在可能用于更基础的场景。所以用户可能还在使用旧版本的代码,但安装了新版本的Locust,导致找不到HttpLocust模块。 接下来,我需要确认这个问题的常见解决方法。首先应该检查用户安装Locust版本。如果版本是1.0或更高,那么确实需要将代码中的HttpLocust替换为HttpUser。同时,TaskSet类的使用方式是否也有变化?比如,原来的self.locust引用是否仍然有效?根据引用[2],在TaskSet中self.locust可以访问HttpLocust的实例,那么在HttpUser中可能需要调整这部分代码,或者保持原样,因为HttpUser继承自User类,可能保留了类似的属性。 然后,用户可能没有注意到官方文档的更新,所以需要引导他们查阅最新的文档。另外,如果用户因为某些原因必须使用旧版本的Locust,可以建议他们降级到0.x版本,但需要注意兼容性问题。 接下来,生成相关问题的时候,要围绕版本升级带来的变化、替代方案、错误处理等方向提问,这样能帮助用户更全面地理解问题。比如,如何迁移旧代码到新版本,或者如何处理其他类似的导入错误。 最后,确保回答中引用了用户提供的引用内容,比如引用[2]中提到的情况是否仍然适用,或者在新版本中如何调整。同时,确认所有代码示例使用正确的语法,比如类名改为HttpUser后的代码结构。</think>关于已安装Locust后导入`HttpLocust`报错解决方案: ### 原因分析 `HttpLocust`在Locust 1.0+版本中已被弃用并更名为`HttpUser`。该改动是Locust框架升级后的重大API变更[^2]。 ### 解决方案步骤 1. **版本检查** ```bash pip show locust ``` 若版本号为1.0+,需修改代码 2. **代码修改** ```python # 旧版本代码(0.x) from locust import HttpLocust, TaskSet # 新版本代码(1.0+) from locust import HttpUser, task ``` 3. **继承关系调整** ```python # 旧写法 class UserBehavior(TaskSet): def on_start(self): self.client.headers = self.locust.custom_headers # 引用[2]的变量传递方式仍然有效 class WebsiteUser(HttpLocust): task_set = UserBehavior # 新写法 class UserBehavior(HttpUser): @task def my_task(self): self.client.headers = self.user.custom_headers # 通过self.user访问父类属性 ``` 4. **兼容方案(二选一)** - **升级代码**(推荐):按新API规范重写 - **降级版本**: ```bash pip install locust==0.14.6 ``` ### 验证示例 ```python from locust import HttpUser, task class QuickstartUser(HttpUser): @task def hello_world(self): self.client.get("/") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值