JSONデータをストリーミングし、LogStash(localhost 5000)と通信するTCPソケットに個々のJSONイベント( '\ n'で区切られたもの)を供給しようとしています。しかし、私は、Elasticsearchの最後のjsonオブジェクトには、LogStashを介して取り込むようにしか見えません。私はAPI呼び出しの動作を検証することができ、約70個の個別のイベントを含める必要があります。最後のものだけがこのLogStashエントリポイント経由でElasticsearchで終了します。また、リクエストの呼び出しでストリームとデリミタが有効であることを検証していて、JSONイベントを1つ返します。 iter_linesの各繰り返しは、期待どおりに単一のJSONオブジェクトを出力します。私は個々のソケットを介して各jsonオブジェクトを送信したいが、それは動作しません。何か案は? jsonオブジェクトごとにソケットを壊してビルドする必要がありますか?Pythonの反復処理とソケット経由のデータ送信
HOST = 'localhost'
PORT = 5000
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
sock.connect((HOST, PORT))
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
#make web request
AUTH = {
"Key" : key,
"Email" : email
}
URL = "https://LOGAPIENDPOINT/{}/logs/requests?start={}".format(zone, start)
counter=0
r = requests.get(URL, headers=AUTH, stream=True)
for d in r.iter_lines(delimiter="\n"):
print d
sock.send()
print "Closing Socket"
sock.close()
sys.exit(0)