2015-05-05 2 views
5

Я пытаюсь построить потребитель Amazon Kinesis Python с использованием библиотеки KCL для Python (https://github.com/awslabs/amazon-kinesis-client-python). Я начал с проверки кода образца. Мне удалось запустить часть кода производителя и пользовательского скрипта в примере кода, но я не могу проверить, будут ли данные из моего потока кинезий (с одним осколком) подталкиваться к образцу Python для примера, sample_kclpy_app.py.Как проверить, работает ли клиент Amazon Kinesis Python

Я использовал amazon_kclpy_helper.py для генерации команды Java, которая вызовет скрипт Python через файл sample.properties. Я запустил команду Java, и на выходе терминала я вижу, что данные из потока Kinesis читаются. Я добавил оператор print в функции process_record пользовательского скрипта Python, чтобы проверить, были ли данные перенесены на него. Но он не отображается на выходе терминала.

Я также попытался использовать logging для генерации сообщений STDOUT, а также для записи в файл. Я также добавил строку assert 0 в коде Python, чтобы принудительно выполнить сбой сценария и увидеть, что в выводе журнала появится исключение. Затем я намеренно добавил синтаксическую ошибку в код Python. Тем не менее, похоже, что все они не были обнаружены Java MultiLangDaemon, который просто продолжал собирать и публиковать сообщения журнала INFO.

В чем может быть проблема? И есть ли лучший способ проверить, действительно ли данные отправляются в функцию process_record пользовательского скрипта Python?

ответ

5

После многочисленных проб и ошибок я понял, что скрипт Python, назначенный executableName, должен быть видимым из процесса Java KCL, который его вызывает.

Быстрое исправление, чтобы установить переменную окружения PATH в директорию скрипта и сделать скрипт исполняемый файл (например, chmod +x)

+0

Мне также пришлось перезапустить 'python setup.py install' – sheldonkreger

3

У меня была такая же проблема, когда мой код как будто никогда не запускался. Только после того, как я посмотрел версию узла, я понял, что executableName в sample.properties - это команда, которая запускается, а не только имя файла python. Я изменил executableName = sample_kclpy_app.py на executableName = python sample_kclpy_app.py , и он начал работать как ожидалось.

+0

спасибо за ответ. Я тоже это сделал и заставил его работать. Я считаю, что реальный трюк заключается в том, что сценарий должен быть видимым в любом месте (т. Е. Установить переменную PATH в верхнюю директорию скрипта). Я установил PATH, чтобы указать на каталог сценария, сделал скрипт исполняемым с помощью 'chmod' и заставил его работать. – Carlos

Смежные вопросы