首页 > 解决方案 > 集成石墨和蝗虫时出错

问题描述

我正在尝试使用以下方法将结果从蝗虫发送到石墨

def __init__(self):
    super(MyLocust, self).__init__()
    self.sock = socket.socket()
    self.sock.connect( ("localhost", 2003) )
    locust.events.request_success += self.hook_request_success 

def hook_request_success(self, request_type, name, response_time, response_length):
    self.sock.sendall('%s %d %d\n'% ("performance." + name.replace('.', '-'), response_time,  time.time())) def

def exit_handler(self):
    self.sock.shutdown(socket.SHUT_RDWR)
    self.sock.close()

我收到以下错误TypeError: a bytes-like object is required, not 'str'

标签: pythongraphitelocust

解决方案


sock.sendall() 需要一个类似字节的对象。

在将字符串传递给 sendall 之前对字符串进行编码,将行更改为类似

self.sock.sendall(('%s %d %d\n'% ("performance." + name.replace('.', '-'), response_time, time.time())).encode())

推荐阅读