【发布时间】:2018-08-02 14:19:19
【问题描述】:
我创建了一个向石墨服务器发送数据的函数。它在执行时将指标名称、值和时间戳发送到石墨服务器:
def collect_metric(metricname, value, timestamp):
sock = socket.socket()
sock.connect( ("localhost", 2003) )
sock.send("%s %s %s\n" % (metricname, value, timestamp))
sock.close()
上面的这个函数在 Python2 中运行良好。我不得不为 Python3 重写这个函数。现在没有数据将发送到石墨。石墨/碳日志或其他内容中没有日志条目...:
def collect_metric(metricname, value, timestamp):
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect( ("localhost", 2003) )
metricname = metricname.encode()
if type(value) == "str":
value = value.encode()
timestamp = timestamp.encode()
message = bytearray()
message = bytes(metricname+b" "+value+b" "+timestamp)
sock.sendall(message)
print(message.decode())
sock.close()
我没有收到任何错误。同样在终端上,我得到了正确的格式/输出(参见“print(message.decode())”)
有人知道为什么它不起作用吗? 谢谢。
【问题讨论】:
标签: python-3.x sockets graphite