[英]System open file limit causing Locust error
我有一个关于蝗虫的问题。 我编写了简单的脚本只是为了检查 Locust 是否有效。 它应该检查我是否可以使用电话号码和密码登录到我正在测试的应用程序。 我用命令启动它: locust -f LM.py --host=https://api... <-address of api 登录
import random, json
from locust import HttpUser, task, between, TaskSet, User
class UserBehavior(User):
def __init__(self, parent):
super(UserBehavior, self).__init__(parent)
self.token = ""
self.headers = {}
def on_start(self):
self.token = self.login()
self.headers = {'Authorization': 'Token ' + self.token}
def login(self):
response = self.client.post("/v1/auth/login", data={'phoneNumber': '+666000666', 'password': 'dupadupa'})
@task
def index(self):
self.client.get("/v1/me/profile", headers=self.headers)
class WebsiteUser(HttpUser):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
但是当我运行它时,我有:
[2020-07-07 00:39:53,931] DESKTOP-2JQB2EC/WARNING/locust.main: System open file limit setting is not high enough for load testing, and the OS wouldnt allow locust to increase it by itself. See https://docs.locust.io/en/st
able/installation.html#increasing-maximum-number-of-open-files-limit for more info.
[2020-07-07 00:39:53,932] DESKTOP-2JQB2EC/INFO/locust.main: Starting web interface at http://:8089
[2020-07-07 00:39:53,955] DESKTOP-2JQB2EC/INFO/locust.main: Starting Locust 1.1
[2020-07-07 00:40:06,436] DESKTOP-2JQB2EC/INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-07-07 00:40:06,437] DESKTOP-2JQB2EC/INFO/locust.runners: All users hatched: UserBehavior: 1, WebsiteUser: 0 (0 already running)
Traceback (most recent call last):
File "src\\gevent\\greenlet.py", line 854, in gevent._gevent_cgreenlet.Greenlet.run
File "c:\users\warpath\pycharmprojects\locustlm\venv\lib\site-packages\locust\user\users.py", line 164, in run_user
user.run()
File "c:\users\warpath\pycharmprojects\locustlm\venv\lib\site-packages\locust\user\users.py", line 131, in run
self.on_start()
File "C:\Users\Warpath\PycharmProjects\LocustLM\LM.py", line 13, in on_start
self.token = self.login()
File "C:\Users\Warpath\PycharmProjects\LocustLM\LM.py", line 18, in login
response = self.client.post("/v1/auth/login", data={'phoneNumber': '+666000666', 'password': 'dupadupa'})
File "c:\users\warpath\pycharmprojects\locustlm\venv\lib\site-packages\locust\user\users.py", line 16, in __getattr__
raise LocustError("No client instantiated. Did you intend to inherit from HttpUser?")
locust.exception.LocustError: No client instantiated. Did you intend to inherit from HttpUser?
2020-07-06T22:40:06Z <Greenlet at 0x215dca9e048: run_user(<LM.UserBehavior object at 0x00000215DC9F67C8>)> failed with LocustError
有人可以解释我如何处理这个错误吗?
我认为错误来自您在UserBehavior
class 中使用User
而不是HttpUser
。 请参阅快速入门。
HttpUser
providesself.client
for each session: "Here we define a class for the users that we will be simulating. It inherits from HttpUser which gives each user a client attribute, which is an instance of HttpSession, that can be used to make HTTP对我们要加载测试的目标系统的请求。”
此外,您使用的是 Locust 1.1,并且task_set
已被删除。 从1.0 更新日志:
“用户 class(以前的 Locust 类)上的 task_set 属性已被删除。要使用单个任务集声明用户 class,现在将使用任务属性:”
尝试这个:
import random, json
from locust import HttpUser, task, between, TaskSet, User
class UserBehavior(HttpUser):
min_wait = 5000
max_wait = 9000
def __init__(self, parent):
super(UserBehavior, self).__init__(parent)
self.token = ""
self.headers = {}
def on_start(self):
self.token = self.login()
self.headers = {'Authorization': 'Token ' + self.token}
def login(self):
response = self.client.post("/v1/auth/login", data={'phoneNumber': '+666000666', 'password': 'dupadupa'})
@task
def index(self):
self.client.get("/v1/me/profile", headers=self.headers)
改变
class UserBehavior(User):
至
class UserBehavior(TaskSet):
您的代码的方式是,您定义了两个用户,而不是一个用户和该用户的任务集。
Tylers 的回答解释了您收到特定异常消息的原因。
它与系统中的参数有关。 真正最好的描述在页面https://www.tecmint.com/increase-set-open-file-limits-in-linux/上,并解释了如何检查和提升它。 很简单,不值得在这里解释。 如果您有任何问题 - 请在评论中提问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.