【问题标题】:Error while Integrating graphite and locust集成石墨和蝗虫时出错
【发布时间】:2020-02-06 06:13:45
【问题描述】:

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

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'

【问题讨论】:

    标签: python graphite locust


    【解决方案1】:

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

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

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

    【讨论】:

    • 我试过了,但它给出了错误 'tuple' object has no attribute 'encode'
    • 括号放错了,试试:self.sock.sendall(('%s %d %d\n'% "performance." + name.replace('.', '-' ), response_time, time.time()).encode())
    • 仍有错误 TypeError: not enough arguments for format string
    • 啊,还是少了一个括号。 self.sock.sendall(('%s %d %d\n'% ("performance." + name.replace('.', '-'), response_time, time.time())).encode())
    • 根据您的评论更新了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多