在Nifi中有没有办法运行一个从不同文件夹导入模块、在pipfile中指定需求并有参数传递的python脚本?
简而言之,如何用Nifi执行一个平时在我的虚拟环境中运行的python脚本?
我的最终目标是使用Get File来获取一个文件,然后把它发布到API。我试过执行进程,执行流命令处理器。
要使用Python对flowfile进行后续处理,你可以使用 ExecuteStreamCommand
或 ExecuteScript
InvokeScriptedProcessor
处理机。
该 ExecuteStreamCommand
处理器将运行一个外部shell命令,如 python3 my_python_script.py -arg1 string -arg2 213
,它可以包装自定义的Python代码并使用 STDIN
传递现有的流文件内容和 STDOUT
来捕获新的流文件内容。填充 命令参数 和 命令路径 处理器的属性来定位您的 python
可执行文件并提供 CLI 参数,包括通过 NiFi 表达式语言提供的 flowfile 属性。参见 本回答 为例。
的 ExecuteScript
处理器在与NiFi相同的JVM中运行Jython代码(Python但不访问本地库,只兼容Python 2.7,以及其他一些由于JSR-223的限制)。你可以直接用Python代码处理流文件的属性和内容。请看 本回答 或 本回答 更多细节。