문제

최근에 작성된 많은 파이썬 라이브러리, 심지어 최근에 작성된 라이브러리는 httplib2 또는 소켓 인터페이스를 사용하여 네트워킹 작업을 수행합니다.

그것들은 차단 특성으로 인해 꼬인 것보다 코딩하기가 더 쉽지만, 다른 코드, 특히 GUI One과 통합 할 때 이것이 단점이라고 생각합니다. 멀티 스레딩을 피하는 동안 확장 성, 동시성 또는 GUI 통합을 원한다면 Twisted가 자연스러운 선택입니다.

그래서 나는 그 문제에 대한 의견에 관심이있을 것입니다.

  1. 새로운 네트워킹 코드 (작은 명령 줄 도구 제외)가 트위스트로 작성되어야합니까?
  2. 동일한 프로젝트에서 Twisted, Http2Lib 또는 소켓 코드를 혼합 하시겠습니까?
  3. 대부분의 라이브러리에 대해 꼬인 피스닉이 있습니다 (대안보다 복잡하고 비표준 패키지에 의존성을 소개합니다 ...)?

편집하다: 다른 방식으로 이것을 표현하겠습니다. Twisted로 새로운 도서관 코드를 작성하면 입양에 장벽이 추가 될 수 있습니까? Twisted는 명백한 이점 (특히 Gimel이 언급 한 이식성 및 확장 성)을 가지고 있지만, 일부는 핵심 파이썬 라이브러리가 아니라는 사실은 일부 단점으로 간주 될 수 있습니다.

도움이 되었습니까?

해결책

  1. 새로운 네트워킹 코드 (작은 명령 줄 도구 제외)가 트위스트로 작성되어야합니까?
    • 아마도. 그것은 정말로 달려 있습니다. 때로는 차단 호출을 자신의 스레드로 포장하기에 충분히 쉽습니다. Twisted는 대규모 네트워크 코드에 적합합니다.
  2. 동일한 프로젝트에서 Twisted, Http2Lib 또는 소켓 코드를 혼합 하시겠습니까?
    • 확신하는. 그러나 Twisted는 단일 나사산이며 Twisted의 모든 차단 호출은 전체 엔진을 차단할 것임을 기억하십시오.
  3. 대부분의 라이브러리에 대해 꼬인 피스닉이 있습니다 (대안보다 복잡하고 비표준 패키지에 의존성을 소개합니다 ...)?
    • Python Standard Library에 속한 많은 꼬인 열심이 있습니다. 그러나 많은 사람들이 Asyncore/Asynchat로 괜찮은 네트워킹 코드를 구현할 수 있습니다.

다른 팁

보다 비스리 크로우 촬영-파이썬 꼬리 꼬리, 비표준 (외부) 라이브러리에 따라 필요에 따라 결정해야합니다. 대답에 주목하십시오 @Glyph, 그는의 창시자입니다 Twisted 프로젝트, 그리고 권위적으로 대답 할 수 있습니다 Twisted 관련 질문.

Twisted와 같은 라이브러리의 핵심에서 메인 루프의 기능은 수면이 아니라 Python Select 모듈과 같은 모듈에 의해 노출 된 Select () 또는 Poll ()과 같은 운영 체제 호출입니다. 나는 "like"select라고 말합니다. 이것은 플랫폼마다 많은 API이기 때문에 거의 모든 GUI 툴킷에는 자체 버전이 있습니다. Twisted는 현재이 주제에서 14 가지 변형에 대한 추상 인터페이스를 제공합니다. 그러한 API가 제공하는 일반적인 것은 "여기에 내가 기다리고있는 이벤트 목록이 있습니다. 그들 중 하나가 일어날 때까지 잠을 자고 깨어나서 어떤 것인지 말해주십시오. "

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top