2010-08-15 96 views
10

有哪些庫允許您控制網絡請求(特別是http)的下載速度。我沒有看到任何內置於urllib2中的內容(也不在我打算使用的(Py)Qt中)。Python中的帶寬限制

可以扭曲控制帶寬嗎?如果不是,我該如何控制urllib2或Twisted的讀取緩衝區大小? sleep暫停網絡操作不是一種選擇。

回答

8

當然扭曲可以。你想要twisted.protocols.policies.ThrottlingFactory。在將其傳遞給任何需要工廠的產品之前,只需將其中現有的工廠包裝在其中。

+1

你能發表一個完整的例子嗎?我被所有的課程迷失了一些。 – 2010-08-15 18:47:10

8

urllib2沒有提供這樣做的方法,所以你必須擴展一些它使用的類並實現自己的速率限制。你可能想看看this question。如果您決定編寫限制器,請閱讀token bucketleaky bucket算法。

或者,您可以使用pycurl以及CURLOPTMAXRECVSPEEDLARGE選項。

編輯:urlgrabber包似乎也支持節流,並且可能比pycurl更容易理解。

如果您更願意使用事件循環模型進行編程,則可以使用Twisted方法,該方法在另一個答案中已經提到。