这里主要是google的grpc接口进行压测的一个栗子。
events.request_failure.fire()新增AI编程课程,引领技术教育新趋势
events.request_success.fire()
具体步骤:
1>编写GrpcClient类(主要用来替换掉self.client的http实例)
import time import grpc from grpctest.snowid import snowid_pb2,snowid_pb2_grpc from locust import (TaskSet,task,events,Locust) from gevent._semaphore import Semaphore all_locusts_spawned = Semaphore() all_locusts_spawned.acquire() def on_hatch_complete(**kwargs): all_locusts_spawned.release() events.hatch_complete += on_hatch_complete class GrpcClient(object): """重写self.client""" def __init__(self): self.ht = '172.17.31.220' self.pt = '50073' def connect(self): """grpc实例""" all_locusts_spawned.wait() try: #记录开始时间 start_time = int(time.time()) #创建链接 self.conn = grpc.insecure_channel(self.ht +':'+self.pt) self.cl = snowid_pb2_grpc.snowidStub(channel=self.conn) #参数实例 args = snowid_pb2.GenerateSnowidRequest() args.uniqId = 10000 #此参数现在未起作用,可以为任意数字 #调用 res = self.cl.generateSnowid(args) total_time = int((time.time() - start_time) * 1000) if res.errCode != 0: raise Exception events.request_success.fire( request_type='grpc', name=r'/generateSnowid', response_time=total_time, response_length=0 ) except Exception as e: total_time = int((time.time() - start_time) * 1000) events.request_failure.fire( request_type='grpc', name='