We have server on Python and client + web service on Ruby. That works only if file from URL is less than 800 k. It seems like "socket.puts data" in a client works, but "output = socket.gets" - not. I think problem is in a Python part. For big files tests run "Connection reset by peer". Is it buffer size variable by default somewhere in a Python?
A:
Could you add a little more information and code to your example?
Are you thinking about sock.recv_into() which takes a buffer and buffer size as arguments? Alternately, are you hitting a timeout issue by failing to have a keepalive on the Ruby side?
Guessing in advance of knowledge.
Charles Merriam
2010-03-12 20:40:43
Thank you for your response! Finally I did it by using loops and getting chunks both on the Ruby and the Python sides. That works.Ruby:<code> output = "" while !socket.eof? do output = output + socket.read(1024) end</code>Python:<code>def handle(self): total_data = [] while 1: data = self.request.recv(1024) if len(data) < 1024: total_data.append(data) break total_data.append(data) t_data = ''.join(total_data)</code>
Anna
2010-03-16 15:38:28