I'm using thrift client in python to communicate with a server for a long time calculation work. Then I tried to set a timeout at my client side. But I always get a socket timeout error.
Main code infomation as below:
# 1 client
tsocket = TSocket.TSocket("127.0.0.1", 9808)
tsocket.setTimeout(1000*1500) # set to 1500s
transport = TTransport.TFramedTransport(tsocket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = interaction_client(protocol)
transport.open()
# client.do_sth()...
# 2 server
handler = InteractionHandler()
processor = interaction_processor(handler)
socket = TSocket.TServerSocket("127.0.0.1", 9808)
server = TNonblockingServer.TNonblockingServer(processor, socket)
server.serve()
I always get socket.timeout: timed out like:
pivot_table_data = self.client.get_pivotable(params)
File "/usr/local/services/analysis/thrift/Analysis.py", line 45, in get_pivotable
return self.recv_get_pivotable()
File "/usr/localservices/analysis/thrift/Analysis.py", line 57, in recv_get_pivotable
(fname, mtype, rseqid) = iprot.readMessageBegin()
File "/data/home/server/venv3.6/lib/python3.6/site-packages/thrift/protocol/TBinaryProtocol.py", line 134, in readMessageBegin
sz = self.readI32()
File "/data/home/server/venv3.6/lib/python3.6/site-packages/thrift/protocol/TBinaryProtocol.py", line 217, in readI32
buff = self.trans.readAll(4)
File "/data/home/server/venv3.6/lib/python3.6/site-packages/thrift/transport/TTransport.py", line 60, in readAll
chunk = self.read(sz - have)
File "/data/home/server/venv3.6/lib/python3.6/site-packages/thrift/transport/TTransport.py", line 281, in read
self.readFrame()
File "/data/home/server/venv3.6/lib/python3.6/site-packages/thrift/transport/TTransport.py", line 285, in readFrame
buff = self.__trans.readAll(4)
File "/data/home/server/venv3.6/lib/python3.6/site-packages/thrift/transport/TTransport.py", line 60, in readAll
chunk = self.read(sz - have)
File "/data/home/server/venv3.6/lib/python3.6/site-packages/thrift/transport/TSocket.py", line 117, in read
buff = self.handle.recv(sz)
socket.timeout: timed out
How can I avoid this error?
Thanks