2012-03-21 4 views
3

OpenTSDBにメトリックデータを送信するのにnetcatの代わりにpythonソケットを使用しようとしていますが、運が得られません。それが可能なら誰でも私に知らせることができますか? OpenTSDBでnetcatを置き換えるPythonソケット

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 'を実行してPythonコードを指すことで、動作することを確認することができます。コマンドの最後に改行を追加する必要がありますか( '' ... host = dummy \ n "'など)? – larsks

+0

あなたは最終的に出力バッファがフラッシュされるように、ソケットを 'close()'するべきです。 – moooeeeep

+0

改行を追加するようなことがそのトリックをします。 – Sheng

答えて

7

OpenTSDBは行単位で解析するので、送信する文字列の最後に\nが必要です。

関連する問題