Я пытаюсь запустить сервер Stanford NLP в одном отдельном потоке и передать экземпляр сервера в качестве параметра методу run_nlp
, определенному в классе Grid
, который является классом макета для моего приложения Python.
from readUseCase import parser
...
...
class Grid(Widget):
text_from_file = ObjectProperty(None)
client = ObjectProperty(None)
def start_server(self):
with CoreNLPClient(properties='./server.props') as self.client:
pass
def run_nlp(self):
parser(self.client, self.text_from_file.text)
class Main(App):
def build(self):
thread1 = threading.Thread(target=Grid().start_server)
thread1.start()
return Grid()
if __name__ == '__main__':
Main().run()
Итак, что происходит, я запускаю приложение, thread
запускается, консоль распечатывает, что сервер запущен, мое приложение также запущено и ожидает некоторого пользовательского ввода. Но когда я ввожу некоторый текст для NLP и нажимаю кнопку для запуска метода run_nlp()
, функции parser()
нужны 2 входных параметра, первый - это объект сервера, а второй - вводимый текст.
Анализатор функции:
def parser(client, text):
# submit the request to the server
ann = client.annotate(text) //AttributeError("NoneType" object has no attribute "annotate")
Я получаю правильное значение в параметре self.text_from_file.text
, но я получаю NoneType
для параметра self.client
, и я не знаю почему. Я пытался присвоить его какой-то другой переменной или return self.client
, но ничего из этого не работает.
Я называю start_server
верно? Или где может быть проблема?