2009-10-04 3 views
0

에 서버를 차단하는 것은 누군가가 소켓 라이브러리는 혼자가비 파이썬

는 "혼자 소켓 라이브러리"는 무엇을 의미하는

답변

0

확실하지를 사용하여 비 차단 서버 코드를 작성하는 방법을 알려 주시기 바랍니다 수 - 당신은 분명히 다른 모듈이 필요합니다 표준 파이썬 라이브러리에서.

최저 수준의 비 차단 코드는 select module입니다. 이렇게하면 많은 동시 클라이언트 연결을 가질 수 있으며 처리 대기중인 입력이보고됩니다. 따라서 서버 (승인) 소켓과 이미 수락 한 클라이언트 연결을 모두 선택합니다. 그 위에 얇은 레이어가 asyncore 모듈입니다.

2

socket일까요? 이므로 다른 표준 라이브러리 모듈을 사용하는 것이 훨씬 간단합니다. 그렇지 않은 경우 select!

socket를 사용하도록 숙제의 조건에 의해 제약이있는 경우에, 나는 그렇지 않으면 심각 운이있어, 당신은 적어도 threading (또는 multiprocessing)를 추가 할 수 있기를 바랍니다 - 당신이 timeout와 소켓을 만들 수 있습니다 , 그러나 다른 명백한 표준 라이브러리 모듈 (비동기 또는 스레드 서비스를 지원하는 데 필요한 도움) 없이도 시간 초과 소켓을 저글링하는 것은 심각한 혼란을 야기합니다 ...-).

5

솔직히 말해서, (운동을위한 것이 아니면)하지 마십시오. Twisted Framework은 네트워크 관련 모든 작업을 수행하므로 전송 계층을 신경 쓰지 않고 프로토콜 만 작성해야합니다. 소켓 코드를 작성하는 것은 쉽지 않으므로 다른 누군가가 작성하고 테스트 한 코드를 사용하지 않는 것이 좋습니다.

+0

트위스트 사용, 나는 한 번 심지어 간단한 일 클라이언트 또는에 의해 폐쇄 된 연결 어떠했는지를 체크처럼 ...는 A의 고통, 이벤트 기반의 소켓 라이브러리 나 자신을 썼다 오류로 많은 문제가 발생할 수 있습니다. 소켓이 작동하는 방법에 대해 많은 것을 배우고 싶다면 그럴 가치가 있습니다.하지만 많은 시행 착오가 있습니다. –

0

eventlets 또는 gevent를 사용하십시오. 원숭이는 기존 라이브러리를 패치합니다. 소켓 모듈은 아무런 변화없이 사용할 수 있습니다. 코드는 동기식으로 나타나지만 비동기 적으로 실행됩니다.

예 : 실제로 http://eventlet.net/doc/examples.html#socket-connect