Python: 如何以编程方式停止 thrift 服务器?

Python: How to stop a thrift server programmatically?

我只想 stop/close 使用 python 创建的 thrift TSimpleServer。但是,由于错误 "AttributeError: 'TSimpleServer' object has no attribute 'stop'." 没有 .stop() 和 .close() 可以执行此操作是否有任何解决方案可以解决此问题?任何帮助将不胜感激。

from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
from rpc1_nodejs_call_python import printService

from TestHandler import TestHandler

processor = printService.Processor(TestHandler())
transport = TSocket.TServerSocket(host='127.0.0.1', port=8080)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)

print("Starting thrift server in python...")
server.serve()

print("Stoping thrift server in python...")
server.stop()
# server.close()

实际上它似乎根本不是 possible/foreseen: https://github.com/apache/thrift/blob/master/lib/py/src/server/TServer.py

如您所见,没有 stop(),所有三个服务器实现目前都在无限循环 while true

假设有人要添加这个,通常的方法是使用 stop() 方法来设置一些标志或类似的东西来指示终止。必须从另一个线程调用它,因为第一个线程在服务时仍保留在 serve() 中。

底线:似乎尚未实施。