該擴展能根據(jù) Scrapy 服務(wù)器及您爬取的網(wǎng)站的負載自動限制爬取速度。
在 Scrapy 中,下載延遲是通過計算建立 TCP 連接到接收到 HTTP 包頭(header)之間的時間來測量的。
注意,由于 Scrapy 可能在忙著處理 spider 的回調(diào)函數(shù)或者無法下載,因此在合作的多任務(wù)環(huán)境下準確測量這些延遲是十分苦難的。 不過,這些延遲仍然是對 Scrapy(甚至是服務(wù)器)繁忙程度的合理測量,而這擴展就是以此為前提進行編寫的。
算法根據(jù)以下規(guī)則調(diào)整下載延遲及并發(fā)數(shù):
AUTOTHROTTLE_START_DELAY 中指定的下載延遲啟動。注解
AutoThrottle 擴展尊重標準 Scrapy 設(shè)置中的并發(fā)數(shù)及延遲。這意味著其永遠不會設(shè)置一個比
DOWNLOAD_DELAY更低的下載延遲或者比CONCURRENT_REQUESTS_PER_DOMAIN更高的并發(fā)數(shù) (或CONCURRENT_REQUESTS_PER_IP,取決于您使用哪一個)。
下面是控制 AutoThrottle 擴展的設(shè)置:
更多內(nèi)容請參考限速算法。
默認:False
啟用 AutoThrottle 擴展。
默認:5.0
初始下載延遲(單位:秒)。
默認:60.0
在高延遲情況下最大的下載延遲(單位秒)。
默認:False
起用 AutoThrottle 調(diào)試(debug)模式,展示每個接收到的 response。您可以通過此來查看限速參數(shù)是如何實時被調(diào)整的。