2015-05-05 4 views
5

Ich versuche, einen Amazon Kinesis Python-Consumer mithilfe der KCL-Bibliothek für Python (https://github.com/awslabs/amazon-kinesis-client-python) zu erstellen. Ich begann mit der Überprüfung des Beispielcodes. Ich konnte sowohl den Producer- als auch den Consumer-Scripts-Teil des Beispielcodes ausführen, aber ich kann nicht überprüfen, ob die Daten meines Kinesis-Streams (mit einem Shard) an das Python-Consumer-Beispielskript sample_kclpy_app.py gesendet werden.So überprüfen Sie, ob der Amazon Kinesis Python-Client funktioniert

Ich benutzte die amazon_kclpy_helper.py den Java-Befehl zu erzeugen, der das Python-Skript durch die sample.properties Datei aufrufen würde. Ich habe den Java-Befehl ausgeführt und kann von der Terminalausgabe sehen, dass die Daten aus dem Kinesis-Stream gelesen werden. Ich fügte eine print Anweisung in der process_record Funktion des Python Verbraucherskriptes hinzu, um zu überprüfen, ob die Daten zu ihm geschoben wurden. Aber es wird nicht in der Terminalausgabe angezeigt.

Ich habe auch versucht, mit logging STDOUT Nachrichten zu generieren, sowie in eine Datei schreiben. Ich fügte auch hinzu assert 0 Zeile in den Python-Code zu zwingen, das Skript fehlschlagen und sehen, eine Ausnahme würde in der Protokollausgabe erscheinen. Dann fügte ich absichtlich einen Syntaxfehler im Python-Code hinzu. Es scheint jedoch, dass all dies von dem Java MultiLangDaemon nicht erkannt wurde, der gerade weiterging und INFO-Protokollnachrichten ausbreitete.

Was könnte das Problem sein? Und gibt es eine bessere Möglichkeit zu überprüfen, ob die Daten tatsächlich an die process_record Funktion des Python-Consumer-Skript gesendet werden?

Antwort

5

Nach zahlreichen Versuch und Irrtum, fand ich heraus, dass das Python-Skript executableName aus dem Java-KCL-Prozess, der es aufruft, sichtbar sein sollte.

Die schnelle Lösung ist es, die PATH Umgebungsvariable auf das Verzeichnis des Skripts zu setzen und das Skript eine ausführbare Datei (z chmod +x)

+0

Ich musste auch 'python setup.py install' erneut ausführen – sheldonkreger

3

Ich hatte das gleiche Problem, wo mein Code schien nie zu laufen. Erst als ich die Node-Version betrachtete, erkannte ich, dass executableName in sample.properties der Befehl war, der ausgeführt wurde, und nicht nur der Name der Python-Datei. Ich änderte executableName = sample_kclpy_app.py zu executableName = python sample_kclpy_app.py und es begann zu arbeiten, wie erwartet.

+0

Danke für die Antwort zu machen. Ich habe das auch getan und es zur Arbeit gebracht. Ich denke, der wahre Trick ist jedoch, dass das Skript überall sichtbar sein sollte (d. H. Die Variable PATH auf das oberste Verzeichnis des Skripts setzen). Ich habe meinen PATH so eingestellt, dass er auf das Skript-Verzeichnis zeigt, das Skript als ausführbar über 'chmod' gemacht und es zum Laufen gebracht. – Carlos