2010-08-15 3 views
10

어떤 라이브러리가 있어도 네트워크 요청 (특히 http)의 다운로드 속도를 제어 할 수 있습니다. urllib2 (또는 내가 사용하고자하는 (Py) Qt)에 내장 된 것을 보지 못했습니다.파이썬에서 대역폭 조절

Twisted control bandwidth? 그렇지 않다면 urllib2 또는 Twisted의 읽기 버퍼 크기를 어떻게 제어 할 수 있습니까? sleep 네트워크 작업을 일시 중단하는 것은 옵션이 아닙니다.

답변

8

물론 꼬인 수 있습니다. twisted.protocols.policies.ThrottlingFactory을 원합니다. 공장을 원하는대로 건네기 전에 기존 공장을 포장하십시오.

+1

전체 사례를 게시 할 수 있습니까? 나는 모든 수업에서 약간 잃어 버렸어. –

8

urllib2는이를 수행하는 방법을 제공하지 않으므로 사용하는 클래스 중 일부를 확장하고 속도 제한을 구현해야합니다. this question을보고 싶을 수도 있습니다. 리미터를 작성하려면 token bucketleaky bucket 알고리즘을 읽어보십시오.

또는 CURLOPTMAXRECVSPEEDLARGE 옵션과 함께 pycurl을 사용할 수 있습니다.

편집 : urlgrabber 패키지는 조절을 지원하는 것으로 보이며 pycurl보다 이해하기 쉽습니다.

이벤트 루프 모델을 사용하여 프로그램하는 것을 선호하는 경우 이미 다른 답변에서 언급 된 Twisted 방식이 있습니다.