爬蟲框架scrapy篇八——settings內(nèi)的相關(guān)操作

1、并發(fā)請求的相關(guān)參數(shù)

1.1、設(shè)置并發(fā)請求的最大數(shù)量

CONCURRENT_REQUESTS

CONCURRENT_REQUESTS = 16  # 全局并發(fā)請求,下載器將執(zhí)行的并發(fā)(即同時)請求的最大數(shù)量
# CONCURRENT_REQUESTS_PER_IP = 16  # 指任何單個IP執(zhí)行的并發(fā)請求的最大數(shù)量,
# CONCURRENT_REQUESTS_PER_DOMAIN = 16  # 指任何單個域名執(zhí)行的并發(fā)(即同時)請求的最大數(shù)量

CONCURRENT_REQUESTS
全局并發(fā)請求 (CONCURRENT_REQUESTS): Scrapy會維護一個隊列,其中包含所有待處理的請求。當隊列中的請求數(shù)小于 CONCURRENT_REQUESTS 時,Scrapy會繼續(xù)添加新的請求到隊列中。一旦達到上限,Scrapy將停止添加新的請求,直到有請求完成并從隊列中移除。
CONCURRENT_REQUESTS_PER_IP
IP并發(fā)請求 (CONCURRENT_REQUESTS_PER_IP): Scrapy會為每個IP地址維護一個獨立的隊列。對于每個IP地址,如果其隊列中的請求數(shù)小于 CONCURRENT_REQUESTS_PER_IP,Scrapy將繼續(xù)向該IP地址發(fā)送請求。否則,它會暫停向該IP地址發(fā)送新請求,直到有請求完成并從隊列中移除。
CONCURRENT_REQUESTS_PER_DOMAIN
域名并發(fā)請求 (CONCURRENT_REQUESTS_PER_DOMAIN): Scrapy會為每個域名維護一個獨立的隊列。對于每個域名,如果其隊列中的請求數(shù)小于 CONCURRENT_REQUESTS_PER_DOMAIN,Scrapy將繼續(xù)向該域名發(fā)送請求。否則,它會暫停向該域名發(fā)送新請求,直到有請求完成并從隊列中移除。

1.2 延遲時間

DOWNLOAD_DELAY

# 設(shè)置在每次請求之間等待1秒
DOWNLOAD_DELAY = 1

DOWNLOAD_DELAY 是一個浮點數(shù)或整數(shù),表示在每次請求之間等待的秒數(shù)。默認值通常為 0,即沒有延遲。

1.3最大并發(fā)數(shù)和延遲時間

CONCURRENT_REQUESTS和DOWNLOAD_DELAY

現(xiàn)在假設(shè)一個場景
DOWNLOAD_DELAY = 1
CONCURRENT_REQUESTS =20
當我們有100個請求的時候,需要多少秒呢?
這里分為兩個情況:

第一個情況
(請求一秒內(nèi)可以完成)
我們的延遲時間是1秒,
所以每一個請求之間的延遲都是1秒,
所以100個請求需要100秒才能完成。

第二種情況
(請求需要很久,大于20秒以上,比如下載文件)
我們的延遲時間是1秒,
所以每一個請求之間的延遲都是1秒,
當?shù)降?0秒的時候,達到最大并發(fā)數(shù)20,
這時候即使到21秒,也不會進行第21個請求,
這時候100個請求需要100秒以上甚至幾分鐘才能完成

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容