현재 기본 HTTP 서버는 BaseHTTPRequestHandler
을 사용하여 설정되었으며 동일한 do_GET
메서드를 사용합니다. 요청이 5 초 동안 오지 않으면 ID가 함수 check
처럼 호출됩니다.기본 HTTP 서버가있는 카운터를 설정하십시오.
동일한 시간 모듈과 함께 다중 처리를 사용하는 것을 고려하고 있지만 신뢰성에 대해 우려하고 있습니다. 같은 모범 사례에 대한 제안이 있습니까?
감사합니다.
[편집]
Marjin의 솔루션은 정말 멋지다 그러나 나는 다음 역 추적으로 결국 : -
Traceback (most recent call last):
File "test.py", line 89, in <module>
main()
File "test.py", line 83, in main
server.serve_forever()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 224, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
select.error: (4, 'Interrupted system call')
[수정 2] 내가 파이썬 2.7에 그것을 시도했지만 오류가 계속 발생합니다.
[EDIT 3]를 사용하는 신호 처리기를 사용할 수 BaseHTTPRequestHandler
에 기초한 것과 같은 단순 서버 들어
Traceback (most recent call last):
File "test.py", line 90, in <module>
main()
File "test.py", line 84, in main
server.serve_forever()
File "/usr/local/lib/python2.7/SocketServer.py", line 225, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
select.error: (4, 'Interrupted system call')
당신은 무엇을 더 요청이 5 초에 올 때 어떻게해야합니까? 그것이 5 초 이상되었을 때 '반응'해도 괜찮습니까? –
ID는 로그를 남기고 프로세스를 종료하고 다시 시작합니다. 반응이 무슨 뜻인지 설명해 주시겠습니까? 감사. –
글쎄, 가장 최근에 성공한 요청 시간을 저장할 수 있으며, * next * 요청이 들어 오면 몇 시간이 경과했는지 측정 할 수 있습니다. 그것이 5 초 이상이라면 어떤 것을 기록 할 수 있고, 프로세스를 죽이고 재시작 할 수 있습니다. –