简体   繁体   中英

python xmlrpc timeout error

I am using xmlrpc to contact a local server. On the client side, Sometimes the following socket timeout error and happens and its not a consistent error. Why is it happening? What could be the reason for socket timeout?

<class 'socket.timeout'>: timed out
      args = ('timed out',)
      errno = None
      filename = None
      message = 'timed out'
      strerror = None 

Traceback on the server side is as follows

Exception happened during processing of request from ('127.0.0.1', 34855)
Traceback (most recent call last):
  File "/usr/lib/python2.4/SocketServer.py", line 222, in handle_request
    self.process_request(request, client_address)
  File "/usr/lib/python2.4/SocketServer.py", line 241, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.4/SocketServer.py", line 254, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.4/SocketServer.py", line 521, in __init__
    self.handle()
  File "/usr/lib/python2.4/BaseHTTPServer.py", line 314, in handle
    self.handle_one_request()
  File "/usr/lib/python2.4/BaseHTTPServer.py", line 308, in handle_one_request
    method()
  File "/usr/lib/python2.4/SimpleXMLRPCServer.py", line 441, in do_POST
    self.send_response(200)
  File "/usr/lib/python2.4/BaseHTTPServer.py", line 367, in send_response
    self.send_header('Server', self.version_string())
  File "/usr/lib/python2.4/BaseHTTPServer.py", line 373, in send_header
    self.wfile.write("%s: %s\r\n" % (keyword, value))
  File "/usr/lib/python2.4/socket.py", line 256, in write
    self.flush()
  File "/usr/lib/python2.4/socket.py", line 243, in flush
    self._sock.sendall(buffer)
error: (32, 'Broken pipe')

I killed the server and restarted it. Its working fine now. What could be the reason? My machine's RAM went full yesterday night by a process and came back to normal today morning. Will this error be because of some swapping of processes?

Looks like the client socket it timing out waiting for the server to respond. Is it possible that your server might take a lot time to respond some times? Also, if the server is causing the machine to go into swap, that would slow it down making a timeout possible.

If I remember right, socket timeout is not set in xmlrpc in python. Are you doing socket.setdefaulttimeout somewhere in your code?

If it is expected that your server will take time once in a while, then you could set a higher timeout value using above.

HTH

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM