Как запустить python скрипт с зависимостями в виртуальной среде в Nifi? - PullRequest
0 голосов
/ 22 апреля 2020

Есть ли в Nifi способ запустить скрипт python, который имеет модули, импортированные из другой папки, требования указаны в pipfile и имеют аргументы для передачи?

Короче говоря, как выполнить * Сценарий 1007 *, который обычно выполняется в моей виртуальной среде с использованием Nifi?

Конечная цель для меня - это выбрать файл с помощью Get File и отправить его в API. Я пытался выполнить процесс, выполнить процессоры streamcommand.

1 Ответ

2 голосов
/ 23 апреля 2020

Чтобы выполнить последующую обработку потокового файла с использованием Python, вы можете использовать процессоры ExecuteStreamCommand или ExecuteScript / InvokeScriptedProcessor.

Процессор ExecuteStreamCommand будет запускать команду внешней оболочки, например python3 my_python_script.py -arg1 string -arg2 213, которая может переносить пользовательский код Python и использовать STDIN для передачи существующего содержимого потокового файла и STDOUT для захвата нового содержимого потокового файла. Заполните свойства процессора Аргументы и Путь команды процессора, чтобы найти исполняемый файл python и предоставить аргументы CLI, включая атрибуты потокового файла, через язык выражений NiFi. См. этот ответ для примера.

Процессор ExecuteScript выполняет код Jython (Python, но без доступа к собственным библиотекам, только совместимость Python 2.7 и некоторые другие ограничения из-за JSR-223) в та же JVM, что и NiFi. Вы можете обрабатывать атрибуты и содержимое потокового файла напрямую с помощью кода Python. См. этот ответ или этот ответ для получения более подробной информации.

...