Support Questions

Find answers, ask questions, and share your expertise
Announcements
Celebrating as our community reaches 100,000 members! Thank you!

ExecuteScript with python 3

avatar
Explorer

I am trying to use the ExecuteScript processor to run a python program that connects to irc and posts messages. I have python3 on my system but when I paste the python code into the ExecuteScript processor I get the following error:

Unable to load script: TypeError: str() takes at most 1 arguments (2 given) in <script> at line number 14: javax.script.ScriptException: TypeError: str() takes at most 1 arguments (2 given) in <script> at line number 14

javax.script.ScriptException: AttributeError: 'NoneType' object has no attribute 'strip' in

that line of code looks like below:

 

 

 

ircsock.send(bytes("USER "+ botnick +" "+ botnick +" "+ botnick + " " + botnick + "\n", "UTF-8"))
ircmsg = ircmsg.strip('\n\r')

 

 

 
in the python script I am pointing to python3 

 

 

#!/usr/local/bin/python3.7
import socket

ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

 

 

 

How can i get the ExecuteScript processor to use python3? I believe the issue is that NiFi is still using python 2.7 in /usr/bin. 

 

2 REPLIES 2

avatar
Explorer

Why don't you try with ExecuteStreamCommand as shown here:

https://www.youtube.com/watch?v=rUJOS6LT5Jk&t=184s

avatar
Explorer

I first set it up with executestream and was successful in getting it to work. Isn't it better to use invokescript or executescript because then there isn't a need to maintain scripts outside of NiFi? I just thought it would be better to natively pass the flowfile using flowfile = session.get().