locust压测rpc协议

 这里主要是google的grpc接口进行压测的一个栗子。

Locust是以HTTP为主要目标构建的。

但是,通过编写钩子触发器

events.request_failure.fire()
复制代码
复制代码
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='
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信