我正在使用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')
我杀死了服务器并重新启动它。它的工作正常。 可能是什么原因? 昨天晚上我的机器内存已经完成了一个进程,今天早上恢复正常。 这个错误会因为某些流程的交换而产生吗?
答案 0 :(得分:1)
看起来它正在等待服务器响应的客户端套接字。您的服务器可能需要花费很多时间来回复吗?此外,如果服务器导致计算机进入交换状态,那么可能会降低计算机的速度。
如果我没记错的话,在python中的xmlrpc中没有设置套接字超时。你在代码中的某个地方做了socket.setdefaulttimeout吗?
如果您的服务器需要花费一段时间,那么您可以使用上面的设置更高的超时值。
HTH