2012-01-09 4 views
0

xmlrpc를 사용하여 로컬 서버에 연결하고 있습니다. 클라이언트 측에서는 때때로 다음 소켓 시간 초과 오류가 발생하고 그 오류가 일관성이 없습니다. 왜 그런 일이 발생합니까? 소켓 타임 아웃의 이유는 무엇입니까? 내가 서버를 살해하고 다시 시작python xmlrpc timeout error

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

다음과 같이 역 추적 서버 측

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

이다. 그것의 일 벌금. 그 이유는 무엇일까요? 내 컴퓨터의 RAM이 어제 밤 프로세스로 가득 차서 오늘 아침에 정상적으로 돌아 왔습니다. 일부 스왑 프로세스 때문에이 오류가 발생합니까?

답변

1

서버가 응답하기를 기다리는 클라이언트 소켓처럼 보입니다. 서버가 응답하는 데 많은 시간이 걸릴 수 있습니까? 또한 서버가 시스템을 스왑으로 전환 시키면 속도가 느려지므로 시간 초과가 발생할 수 있습니다.

내가 기억한다면, 소켓 시간 초과는 Python의 xmlrpc에서 설정되지 않습니다. 귀하의 코드 어딘가에 socket.setdefaulttimeout을하고 있습니까?

서버가 한동안 시간이 걸릴 것으로 예상되는 경우 위에 사용하여 더 높은 시간 초과 값을 설정할 수 있습니다.

HTH

+0

감사합니다. prashanth. 일부 utils 코드에는 socket.setdefaulttimeout이 있습니다. –

+0

코드에서 시간 초과를 설정하지 않습니다. 예, 스왑 상태에있을 때 서버에 시간이 걸립니다. –