python xmlrpc超时错误

时间:2012-01-09 05:45:50

标签: python xml-rpc

我正在使用xmlrpc联系本地服务器。在客户端,有时会发生以下套接字超时错误并且它不是一致的错误。 为什么会这样?套接字超时的原因是什么?

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

服务器端的回溯如下

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')

我杀死了服务器并重新启动它。它的工作正常。 可能是什么原因? 昨天晚上我的机器内存已经完成了一个进程,今天早上恢复正常。 这个错误会因为某些流程的交换而产生吗?

1 个答案:

答案 0 :(得分:1)

看起来它正在等待服务器响应的客户端套接字。您的服务器可能需要花费很多时间来回复吗?此外,如果服务器导致计算机进入交换状态,那么可能会降低计算机的速度。

如果我没记错的话,在python中的xmlrpc中没有设置套接字超时。你在代码中的某个地方做了socket.setdefaulttimeout吗?

如果您的服务器需要花费一段时间,那么您可以使用上面的设置更高的超时值。

HTH