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