ExecuteScript의 python 엔진을 선택했지만 CPython 3 전용 문법과 라이브러리가 동작하지 않는다.
원본은 구버전 ExecuteScript의 Jython 제한이다. 외부 프로세스 방식은 한 FlowFile마다 프로세스 시작 비용이 있으며 NiFi 2의 별도 Python processor API와는 구분한다.
해당 구버전의 Jython 대신 ExecuteStreamCommand에서 Python 3 실행 파일을 직접 지정한다.
확인 수준: 추가 조사 해법 · 해당 케이스 적용 결과 미확인
적용 조건: <...>와 예시 DB·테이블·경로·수치는 실제 확인값으로 바꾼다. 명령과 메뉴는 참고 문서를 바탕으로 보강한 예시이며 대상 시스템에서 실행하지 않았다. 버전·원인에 따른 분기와 남은 확인 사항은 아래에 명시한다.
python 링크를 바꿔도 내장 Jython 엔진은 바뀌지 않는다.'/opt/nifi-python/bin/python3' --version
'/opt/nifi-python/bin/python3' '/opt/nifi-scripts/transform.py' < '<test-input>' > '<test-output>'
| 속성 | 값 |
|---|---|
| Command Path | /opt/nifi-python/bin/python3 |
| Command Arguments | /opt/nifi-scripts/transform.py |
| Working Directory | /opt/nifi-scripts |
| Ignore STDIN | false |
original, output stream, nonzero status relationship을 실제 processor 버전에 맞춰 연결한다. 실패 FlowFile을 무한 자동 재실행하지 않게 구성한다.session, context API는 외부 CPython에 존재하지 않는다. 그대로 옮기지 말고 stdin/stdout 인터페이스로 변경한다.대표 입력의 출력 내용·exit status·실패 relationship을 확인한 뒤 cluster 전체 노드에서 동일하게 실행되는지 확인한다.