簡體   English   中英

系統打開文件限制導致蝗蟲錯誤

[英]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 provides self.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM