1、首先建立一个websocket服务端
class LocustWebSocketClient(Locust):
def __init__(self, ws_url='per.zldda.cn', callback=None):
super().__init__()
self.ws = websocket.create_connection("wss://%s/wsapi" % ws_url, timeout=10)
self.ws_url = ws_url
self.callback = callback
def web_socket_request(self, dictmsg):
resp = None
total_time = None
try:
start_time = time.time()
print('send:', dictmsg)
self.ws.send(simplejson.dumps(dictmsg))
result = self.ws.recv()
resp = simplejson.loads(result)
print("recv:", resp)
total_time = int((time.time() - start_time) * 1000)
if resp['code'] == (1001 or 1000 or 1002):
pass
else:
print('error send:', dictmsg, 11111)
events.request_failure.fire(
request_type='wss',
name='web_socket_request',
response_time=total_time,
exception=resp
)
events.request_success.fire(
request_type='wss',
name='web_socket_request',
response_time=total_time,
response_length=len(resp)
)
if self.callback is None:
return resp
else:
return self.ws
except Exception as e:
print(e)
events.request_failure.fire(
request_type='wss',
name='web_socket_request',
response_time=total_time,
exception=resp
)
然后就开始写呗
class UserBehavior(TaskSet):
def on_start(self):
self.user_id_list = []
self.all_sid = get_sid()
self.url = 'perfor.zldhz.com'
all_worker_info = worker_contract_list(get_ws_driver(ws_url='perfor.zldhz.com'), self.all_sid[0][0], flag=1,
limit='15', page=1, project_id=self.all_sid[0][1], request_status='完成',
status=0, with_charkt_value=True)
for worker_info in all_worker_info['data']['worker_contract']:
self.user_id_list.append(worker_info['id'])
print(self.user_id_list)
@task
def test_project1(self):
ws = LocustWebSocketClient(self.url)
project_list(ws_driver=ws, sid=self.all_sid[0][0])
ws.ws.close()
class WebUserLocust(LocustWebSocketClient):
weight = 1
task_set = UserBehavior
min_wait = 3000
max_wait = 7000
然后 locust -f xxx.py --no-web -c1 -r1 -t100
分布
主:
locust -f locust_test.py --master
子
locust -f locust_test.py --slave --master-host=192.168.22.62