长时间调用的thrift超时:thrift.transport.TTransport.TTransportException:TSocket读取0个字节

时间:2017-07-25 11:09:04

标签: python sockets timeout thrift

我使用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)

1 个答案:

答案 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))