Locust.io 새로운 실행을 시작 / 중지 할 때 시스템 버그없이 locust.io에서 다른 사용자를 어떻게 사용할 수 있습니까?
locust.io 배포 된 서버에서 처음 실행할 때 잘 작동하는이 코드가 있지만 새 실행을 시작 / 중지 할 때 목록과 관련하여 여러 오류가 발생합니다. 순환 할 수 있도록 도와 주 시겠어요?
from locust import HttpUser, task, between, SequentialTaskSet, events
import uuid
import json
import csv
import logging, sys, random, os
with open('somecsv.csv', 'r') as f:
reader = csv.reader(f)
user= list(reader)
#print(user)
class somethingclass(SequentialTaskSet):
def on_start(self):
if len(user) > 0:
self.id= str(user.pop()).strip("][''")
@task
def someting(self):
do something with self.id request
@task
def someting2(self):
do something with self.id request
class Main(HttpUser):
wait_time = between(5, 10)
tasks = [somethingclass]
def _init_(self, *args, **kwargs):
super(Main, self)._init_(*args, **kwargs)
오류는 다음과 같습니다.
[2020-08-18 23 : 06 : 50,899] PC / ERROR / locust.user.task : 'somethingclass'개체에 'id'속성이 없습니다. Traceback (가장 최근 호출 마지막) : 파일 "c : \ windows \ system32 \ src \ locust \ locust \ user \ task.py ", 줄 284, 실행 self.execute_next_task () 파일"c : \ windows \ system32 \ src \ locust \ locust \ user \ task.py ", 줄 309, execute_next_task self .execute_task (self._task_queue.pop (0)) 파일 "c : \ windows \ system32 \ src \ locust \ locust \ user \ task.py", 행 321, execute_task task (self) 파일 "C : \ Users \ user \ Desktop \ Work \ Chipico Chip Transfer \ chiptransfer_load.py ", 44 행,"uuid ": '% s'% self.id, AttributeError : 'somethingclass'개체에 'id'속성이 없습니다.
답변
test_start 및 test_stop 이벤트 를 사용 하여 user
데이터 를 재설정 할 수 있습니다.
from locust import User, task, constant, TaskSet, events
from logging import getLogger
import uuid
logger = getLogger("test")
user = []
@events.test_start.add_listener
def start_something(**kwargs):
logger.info("Starting test...")
user.append(uuid.uuid4())
class somethingclass(TaskSet):
@task
def do_something(self):
logger.info(f"User: {user}")
class Main(User):
wait_time = constant(2)
tasks = [somethingclass]
이것은 여러 번의 테스트 중지 및 시작과 함께 다음 출력을 제공합니다.
[2020-08-18 16:14:12,549] INFO/locust.main: Starting web interface at http://:8089
[2020-08-18 16:14:12,557] INFO/locust.main: Starting Locust 1.1.1
[2020-08-18 16:14:15,759] INFO/test: Starting test...
[2020-08-18 16:14:15,759] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:15,759] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:15,760] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:17,764] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:19,765] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:21,767] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:28,674] INFO/test: Starting test...
[2020-08-18 16:14:28,675] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:28,675] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:28,675] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:30,679] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:32,682] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:34,688] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:38,426] INFO/test: Starting test...
[2020-08-18 16:14:38,427] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:38,427] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:38,428] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb'), UUID('cfd2a456-87d4-4cb2-b7d2-939bb1dfc560')]
[2020-08-18 16:14:40,433] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb'), UUID('cfd2a456-87d4-4cb2-b7d2-939bb1dfc560')]
locust에서 가져 오기 사용자, 작업, 상수, TaskSet, 로깅에서 이벤트 가져 오기 getLogger 가져 오기 uuid
로거 = getLogger ( "test") 사용자 = []
@ events.test_start.add_listener def start_something (** kwargs) : logger.info ( "Starting test ...") user.append (uuid.uuid4 ())
class somethingclass (TaskSet) : @task def do_something (self) : logger.info (f "User : {user}")
class Main (User) : wait_time = constant (2) tasks = [somethingclass]
정답이다