python - 使用python传输文件以执行脚本NiFi
问题描述
我正在尝试使用 NiFi ExecuteScript 将消息发布到使用 Python 的 irc 聊天室。我是否使用正确的语法将流文件从队列传递到处理器?NameError 导致处理器错误:未定义全局名称“服务器”,但我不确定是什么原因造成的。在我添加 session.get() 之前,一切似乎都有效。
import socket
from org.apache.nifi.processor.io import StreamCallback, InputStreamCallback
class PyStreamCallback(InputStreamCallback):
def __init__(self):
pass
self.ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server = "irc.freenode.net"
self.channel = ""
self.botnick = ""
self.ircsock.connect((server, 6667))
self.ircsock.send(bytes("USER "+ botnick +" "+ botnick +" "+ botnick + " " + botnick + "\n"))
self.ircsock.send(bytes("NICK "+ botnick +"\n"))
def joinchan(self, chan):
self.ircsock.send(bytes("JOIN "+ chan +"\n"))
ircmsg = ""
while ircmsg.find("End of /NAMES list.") == -1:
self.ircmsg = ircsock.recv(2048)
self.ircmsg = ircmsg.strip('\n\r')
print(ircmsg)
def sendmsg(self, msg, target=channel):
self.ircsock.send(bytes("PRIVMSG "+ target +" :"+ msg +"\n"))
flowFile = session.get()
if (flowFile != None):
flowFile = session.read(flowFile,PyStreamCallback())
session.commit()
解决方案
self.ircsock.connect((server, 6667))
应该
self.ircsock.connect((self.server, 6667))
推荐阅读
- python - 为什么从同一目录中的模块导入模块时必须在模块前加一个点?
- php - 我希望在修改后的 php-mailer 中插入回复按钮
- python - 小写字母出现错误
- java - 如何在对象类的静态方法中使用 return 语句?
- facebook - 该站点如何仍在使用 Facebook 事件 API?
- firebase - Firebase 身份验证身份未在安全 Firestore 规则级别更新
- tensorflow - ResourceExhaustedError 运行网络演示时第四次尝试
- ruby - 从 Ruby 中编译的 protobuffer 消息中获取枚举值
- javascript - 将 google map api(javascript) 与 django 查询集一起使用,我无法很好地访问查询集的查询
- excel - 比较两个列表并将值从一个导入到另一个