SocketServer 모듈을 사용하는 서버의 요청 처리기에서 개별 연결에 시간 제한을 추가하고 싶습니다.SocketServer 스레딩 TCP 서버 및 Asyncore 디스패처
처음으로 파이썬을 사용하여 네트워크 프로그래밍을 시도하는 것으로 시작하겠습니다. 나는 하위 클래스 인 SocketServer.BaseRequestHandler와 SocketServer.ThreadingTCPServer & SocketServer.TCPServer를 관리했으며 몇 가지 기본적인 스레드 TCP 기능을 가진 두 개의 클래스를 만들 수 있었다.
그러나 들어오는 연결에 시간 초과가 필요합니다. SocketServer 시간 제한 값과 메서드가 기본 제공되는 서버를 오버라이드 (override)하려고하면 문서가 포킹 서버에서만 작동한다고되어 있으므로 작동하지 않습니다. 나는 X 초 후에 발생하는 타이머 스레드를 만들 수 있었다. 그러나 처리기 스레드 내에서 recv 호출을 차단하는 특성으로 인해,이 스레드는 강제로 종료 될 것이므로 아무 쓸모가 없다. 피하고 싶다.
따라서 특정 데이터 양을 알리고 읽는 asyncore 구현이 필요하다는 것을 알고 있습니다. 5 초 동안 아무런 데이터도 보내지 않으면 해당 연결을 닫으려고합니다. (나는 그 작업을 깨끗하게 수행하는 방법을 알고 있습니다.) 소켓과 함께 asyncore를 사용하는 몇 가지 예를 발견했지만 SocketServer를 사용하지는 않았습니다. 그렇다면 어떻게 asyncore & threadingTCPserver를 구현할 수 있습니까? 가능합니까? 누구든지 완료 했습니까? 이 같은
이런 식으로 할 수 있지만 http://twistedmatrix.com/ - 파이썬 네트워크의 세계에 오신 것을 환영합니다. 프로그램 작성! :) –
Jean-Paul Calderone이 링크를 제공해 주셔서 감사합니다. 나는 전에 그것을 보았다. 그리고 정상적인 상황에서 나는 twistedmatrix를 선택 하겠지만, 이것은 매우 보안 의식이 강하고 오픈 소스 나 타사 라이브러리를 원하지 않는 클라이언트를위한 프로젝트입니다. –
매우 슬프 긴데 논리가 유효하지 않습니다 (파이썬은 오픈 소스와 제 3 자입니다). 프로젝트에 행운을 빌어 요. –