Неблокирующий сервер Thrift на Python

В приведенном ниже фрагменте кода я пытаюсь создать неблокирующий сервер экономии на python.

    # set handler to our implementation
    handler = ServiceHandler()

    processor = MyService.Processor(handler)
    transport = TSocket.TServerSocket(port=port)
    tfactory = TTransport.TFramedTransport(transport)  
    pfactory = TBinaryProtocol.TBinaryProtocolFactory()

    # set server
    server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)

    print 'Python Server has started listening on port ' + str(port)
    print '################################################'
    server.serve()

Я получаю следующую ошибку, когда клиент python пытается подключиться к серверу с приведенным выше фрагментом кода. Не могли бы вы сказать мне, что может быть причиной этой ошибки? Наверное, я что-то упускаю.

    Exception in thread Thread-1:
    Traceback (most recent call last):
    File "/usr/lib64/python2.6/threading.py", line 522, in __bootstrap_inner
    self.run()
    File "/usr/lib64/python2.6/threading.py", line 477, in run
    self.__target(*self.__args, **self.__kwargs)
    File "/usr/local/lib64/python2.6/site-packages/thrift/server/TServer.py", line 114, in handle
    itrans = self.inputTransportFactory.getTransport(client)
    AttributeError: TFramedTransport instance has no attribute 'getTransport'

person F. Aydemir    schedule 05.12.2011    source источник
comment
Вышеупомянутые сообщения об ошибках выдаются на стороне сервера FYI.   -  person F. Aydemir    schedule 05.12.2011


Ответы (1)


Я нашел несколько рабочий код Thrift, и похоже, что ваша tfactory должна быть TBufferedTransportFactory, а не экземпляром TBufferedTransport.

tfactory = TTransport.TBufferedTransportFactory()
person Andrew Dalke    schedule 05.12.2011