W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
這是一個(gè)擴(kuò)展,基于Scrapy服務(wù)器和您正在爬行的網(wǎng)站的負(fù)載,自動(dòng)限制爬行速度。
AutoThrottle 擴(kuò)展動(dòng)態(tài)調(diào)整下載延遲,使蜘蛛發(fā)送 ?AUTOTHROTTLE_TARGET_CONCURRENCY
? 平均每個(gè)遠(yuǎn)程網(wǎng)站的并發(fā)請(qǐng)求。
它使用下載延遲來(lái)計(jì)算延遲。主要思想如下:如果服務(wù)器需要 ?latency
? 響應(yīng)時(shí)間為秒,客戶端應(yīng)每秒鐘發(fā)送一個(gè)請(qǐng)求 ?latency/N
? 秒有 ?N
? 并行處理的請(qǐng)求。
不需要調(diào)整延遲,只需設(shè)置一個(gè)小的固定下載延遲,并對(duì)使用 ?CONCURRENT_REQUESTS_PER_DOMAIN
? 或 ?CONCURRENT_REQUESTS_PER_IP
? 選項(xiàng)。它會(huì)產(chǎn)生類似的效果,但有一些重要的區(qū)別:
AutoThrottle 沒有這些問題。
AutoThrottle 算法根據(jù)以下規(guī)則調(diào)整下載延遲:
AUTOTHROTTLE_START_DELAY
? ;latency / N
? 在哪里? ?latency
? 是響應(yīng)的延遲,并且 ?N
? 是 ?AUTOTHROTTLE_TARGET_CONCURRENCY
? .DOWNLOAD_DELAY
? 或大于 ?AUTOTHROTTLE_MAX_DELAY
?
注解
autothrottle擴(kuò)展支持并發(fā)和延遲的標(biāo)準(zhǔn) Scrapy 設(shè)置。這意味著它將尊重 ?CONCURRENT_REQUESTS_PER_DOMAIN
? 和 ?CONCURRENT_REQUESTS_PER_IP
? 選項(xiàng),并且從不將下載延遲設(shè)置為低于
?DOWNLOAD_DELAY
? .
在scrappy中,下載延遲是以建立TCP連接和接收HTTP頭之間所經(jīng)過的時(shí)間來(lái)度量的。
注意,在一個(gè)合作的多任務(wù)環(huán)境中,這些延遲很難精確測(cè)量,因?yàn)閟crapy可能正忙于處理spider回調(diào),例如,無(wú)法參加下載。然而,這些延遲仍然應(yīng)該對(duì)Scrapy(最終是服務(wù)器)有多忙給出一個(gè)合理的估計(jì),并且這個(gè)擴(kuò)展是在這個(gè)前提下構(gòu)建的。
用于控制 AutoThrottle 擴(kuò)展的設(shè)置為:
AUTOTHROTTLE_ENABLED
?
AUTOTHROTTLE_START_DELAY
?
AUTOTHROTTLE_MAX_DELAY
?
AUTOTHROTTLE_TARGET_CONCURRENCY
?
AUTOTHROTTLE_DEBUG
?
CONCURRENT_REQUESTS_PER_DOMAIN
?
CONCURRENT_REQUESTS_PER_IP
?
DOWNLOAD_DELAY
?
有關(guān)詳細(xì)信息,請(qǐng)參閱 它是如何工作的 .
違約: ?False
?
啟用AutoThrottle 擴(kuò)展。
違約: ?5.0
?
初始下載延遲(秒)。
違約: ?60.0
?
在高延遲情況下設(shè)置的最大下載延遲(秒)。
違約: ?1.0
?
Scrapy的平均請(qǐng)求數(shù)應(yīng)與遠(yuǎn)程網(wǎng)站并行發(fā)送。
默認(rèn)情況下,autothrottle會(huì)調(diào)整延遲以向每個(gè)遠(yuǎn)程網(wǎng)站發(fā)送單個(gè)并發(fā)請(qǐng)求。將此選項(xiàng)設(shè)置為更高的值(例如 ?2.0
? )以增加遠(yuǎn)程服務(wù)器的吞吐量和負(fù)載。下層 ?AUTOTHROTTLE_TARGET_CONCURRENCY
? 價(jià)值(例如) ?0.5
? )讓爬蟲人更加保守和禮貌。
注意 ?CONCURRENT_REQUESTS_PER_DOMAIN
? 和 ?CONCURRENT_REQUESTS_PER_IP
? 啟用
AutoThrottle 擴(kuò)展功能時(shí),仍會(huì)遵循選項(xiàng)。這意味著如果 ?AUTOTHROTTLE_TARGET_CONCURRENCY
? 設(shè)置為大于的值 ?CONCURRENT_REQUESTS_PER_DOMAIN
? 或 ?CONCURRENT_REQUESTS_PER_IP
? ,爬蟲程序?qū)o(wú)法達(dá)到此數(shù)量的并發(fā)請(qǐng)求。
在每個(gè)給定的時(shí)間點(diǎn)上,scrapy可以發(fā)送的并發(fā)請(qǐng)求多于或少于 ?AUTOTHROTTLE_TARGET_CONCURRENCY
? ;這是爬蟲嘗試接近的建議值,而不是硬限制。
違約: ?False
?
啟用 AutoThrottle 調(diào)試模式,該模式將顯示收到的每個(gè)響應(yīng)的統(tǒng)計(jì)信息,以便您可以看到如何實(shí)時(shí)調(diào)整節(jié)流參數(shù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: