TNonblockingServer в экономном сбое, когда открывается TFramedTransport

мы пытались реализовать Thrift-сервер в C ++ для связи с клиентом Python.

вот мой код:

C ++ сервер:

shared_ptr _handler (new myHandler());
shared_ptr _processor (new myService(_handler));
shared_ptr _protocolFactory (new TBinaryProtocolFactory());
shared_ptr _threadManager = ThreadManager::newSimpleThreadManager(15);
shared_ptr _threadFactory(new PosixThreadFactory());
_threadManager->threadFactory(_threadFactory);
_threadManager->start();

shared_ptr _server(new TNonblockingServer(_processor, _protocolFactory, 9090 ,_threadManager));;
_server->serve();

Код клиента Python:

transport = TSocket.TSocket(host, port)
transport = TTransport.TFramedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = MyService.Client(protocol)
transport.open()
log.info("connection success!")

Когда я запускаю сервер, а затем клиента, я получаю следующее:

На стороне клиента (Python):

./myPythonExec.py
connection success!
socket.error: [Errno 104] Connection reset by peer

На стороне сервера (c ++): I '

assertion " 0 " failed
0  0x00007ffff0942425 in __GI_raise (sig=) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
1  0x00007ffff0945b8b in __GI_abort () at abort.c:91
2  0x00007ffff093b0ee in __assert_fail_base (fmt=, assertion=0x7ffff1438f1a "0", 
file=0x7ffff1439298 "src/server/TNonblockingServer.cpp", line=, function=) at assert.c:94
3  0x00007ffff093b192 in __GI___assert_fail (assertion=0x7ffff1438f1a "0", file=0x7ffff1439298 "src/server/TNonblockingServer.cpp", 
line=558, function=0x7ffff1439c60 "void apache::thrift::server::TNonblockingServer::TConnection::workSocket()") at assert.c:103
4  0x00007ffff14336e4 in apache::thrift::server::TNonblockingServer::TConnection::workSocket (this=0x7fffc0004ac0)
at src/server/TNonblockingServer.cpp:558
5  0x00007ffff11ed94c in event_base_loop () from /usr/lib/libevent-2.0.so.5

м с использованием libthrift 0.8.0 и имеют такой же pb с libthrift 0.9.1

Он отлично работает при использовании TSimpleServer на C ++ и TBufferedTransport на стороне клиента

Ответы на вопрос(1)

Ваш ответ на вопрос