Python套接字替代netcat在OpenTSDB中的应用

3

我正在尝试使用Python套接字代替netcat将度量数据发送到OpenTSDB,但没有成功。是否有人可以告诉我是否可能这样做?

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("hostname", port))
s.send("put foo 123456789 12.9 host=dummy")

s.send(...) 返回一个非零值,因此我猜字符串确实已经发送了,只是 OpenTSDB 没有识别它。我尝试使用 netcat 发送相同的字符串,而它可以正常工作。


1
就实际的Python而言,那段代码是正确的。您可以通过运行netcat -l <port>并将Python代码指向那里来验证它是否有效。您需要在命令的末尾添加换行符吗(例如,"...host=dummy\n")? - larsks
你应该调用close()关闭套接字,以确保输出缓冲区最终被刷新。 - moooeeeep
似乎添加换行符就可以解决问题。 - Sheng
1个回答

7

OpenTSDB逐行解析,所以是的,您需要在发送的字符串末尾加上\n


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接