我使用thrift构建了一些rpc服务。每次通话可能会运行很长时间(几分钟到几小时)。我已将节俭超时设置为2天。
transport = TSocket.TSocket(self.__host, self.__port)
transport.setTimeout(2 * 24 * 60 * 60 * 1000)
但是节俭总是在大约600秒后关闭连接,但有以下例外:
thrift.transport.TTransport.TTransportException: TSocket read 0 bytes
我应该设置其他超时吗? (python,thrift server:windows; client:ubuntu)
答案 0 :(得分:0)
Thrift Transport连接正在断开连接。这可能是由于网络问题或远程服务重启或超时问题。无论何时在断开连接后进行任何调用,都会导致TTransportException。可以通过重新连接到远程服务来解决此问题。 尝试使用它,在进行远程服务调用之前调用它。
def repoen_transport():
try:
if not transport.isOpen():
transport.open()
except Exception, msg:
print >> sys.stderr.write("Error reopening transport {}".format(msg))