Передать файл для выполнения скрипта NiFi с использованием python - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь использовать NiFi ExecuteScript для отправки сообщений в ir c чат, используя Python. Правильно ли я использую синтаксис для передачи потокового файла из очереди в процессор? Ошибки процессора с NameError: глобальное имя server не определено, но я не уверен, что это вызывает. Кажется, все работает, пока я не добавлю 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()

1 Ответ

0 голосов
/ 26 мая 2020
self.ircsock.connect((server, 6667))

должно быть

self.ircsock.connect((self.server, 6667))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...