python 中的 Thrift TTransportException
Thrift TTransportException in python
我在 python 上尝试使用 thrift 执行 RPC 时遇到了一个奇怪的错误。我在网上发现了类似的问题,但其中 none 确实适用于我的情况。
这是我遇到的错误
No handlers could be found for logger "thrift.transport.TSocket"
Traceback (most recent call last):
File "experiment.py", line 71, in <module>
transport.open()
File "/usr/local/lib/python2.7/dist-packages/thrift/transport/TTransport.py", line 152, in open
return self.__trans.open()
File "/usr/local/lib/python2.7/dist-packages/thrift/transport/TSocket.py", line 113, in open
raise TTransportException(TTransportException.NOT_OPEN, msg)
thrift.transport.TTransport.TTransportException: Could not connect to any of [('192.168.178.44', 9000)]
我认为以下是生成它的代码。
TECS_SERVER_IP = "192.168.178.44"
TECS_SERVER_PORT = 9000
transport = TSocket.TSocket(TECS_SERVER_IP, TECS_SERVER_PORT)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = TTSService.Client(protocol)
transport.open()
每当我尝试与另一台机器通信时都会发生这种情况,所以我尝试使用 ip“127.0.0.1”并且它有效。但是,使用应该引用同一台计算机的本地主机“192.168.178.44”的 IP 也会产生错误。
对我来说,它似乎由于某种原因无法解析 IP 地址......
关于导致此问题的原因以及如何解决它的任何想法?
我正在使用 Python 2.7.12、thrift 0.9.3 和 Ubuntu 16.04,但我在 Windows 10.
上也遇到了错误
这就是我的 thrift 服务的启动方式
handler = TTSHandler()
handler.__init__()
transport = TSocket.TServerSocket(host='localhost', port=9000)
processor = TTSService.Processor(handler)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
server.serve()
您的服务器应该在客户端可以连接到之前绑定到该地址:
TSocket.TServerSocket(host='192.168.178.44', port=9000)
或使用host='0.0.0.0'
,这意味着绑定机器上的所有 IPv4 地址。
我在 python 上尝试使用 thrift 执行 RPC 时遇到了一个奇怪的错误。我在网上发现了类似的问题,但其中 none 确实适用于我的情况。
这是我遇到的错误
No handlers could be found for logger "thrift.transport.TSocket"
Traceback (most recent call last):
File "experiment.py", line 71, in <module>
transport.open()
File "/usr/local/lib/python2.7/dist-packages/thrift/transport/TTransport.py", line 152, in open
return self.__trans.open()
File "/usr/local/lib/python2.7/dist-packages/thrift/transport/TSocket.py", line 113, in open
raise TTransportException(TTransportException.NOT_OPEN, msg)
thrift.transport.TTransport.TTransportException: Could not connect to any of [('192.168.178.44', 9000)]
我认为以下是生成它的代码。
TECS_SERVER_IP = "192.168.178.44"
TECS_SERVER_PORT = 9000
transport = TSocket.TSocket(TECS_SERVER_IP, TECS_SERVER_PORT)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = TTSService.Client(protocol)
transport.open()
每当我尝试与另一台机器通信时都会发生这种情况,所以我尝试使用 ip“127.0.0.1”并且它有效。但是,使用应该引用同一台计算机的本地主机“192.168.178.44”的 IP 也会产生错误。 对我来说,它似乎由于某种原因无法解析 IP 地址...... 关于导致此问题的原因以及如何解决它的任何想法?
我正在使用 Python 2.7.12、thrift 0.9.3 和 Ubuntu 16.04,但我在 Windows 10.
上也遇到了错误这就是我的 thrift 服务的启动方式
handler = TTSHandler()
handler.__init__()
transport = TSocket.TServerSocket(host='localhost', port=9000)
processor = TTSService.Processor(handler)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
server.serve()
您的服务器应该在客户端可以连接到之前绑定到该地址:
TSocket.TServerSocket(host='192.168.178.44', port=9000)
或使用host='0.0.0.0'
,这意味着绑定机器上的所有 IPv4 地址。