99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

scrapy 2.3 AutoThrottle擴展

2021-06-17 16:13 更新

這是一個擴展,基于Scrapy服務(wù)器和您正在爬行的網(wǎng)站的負載,自動限制爬行速度。

設(shè)計目標

  1. 對站點更好,而不是使用默認的下載延遲為零
  2. 自動調(diào)整Scrapy到最佳的爬行速度,因此用戶不必調(diào)整下載延遲來找到最佳的。用戶只需要指定它允許的最大并發(fā)請求,其余的由擴展來完成。

它是如何工作的

AutoThrottle 擴展動態(tài)調(diào)整下載延遲,使蜘蛛發(fā)送 ?AUTOTHROTTLE_TARGET_CONCURRENCY? 平均每個遠程網(wǎng)站的并發(fā)請求。

它使用下載延遲來計算延遲。主要思想如下:如果服務(wù)器需要 ?latency? 響應(yīng)時間為秒,客戶端應(yīng)每秒鐘發(fā)送一個請求 ?latency/N? 秒有 ?N? 并行處理的請求。

不需要調(diào)整延遲,只需設(shè)置一個小的固定下載延遲,并對使用 ?CONCURRENT_REQUESTS_PER_DOMAIN? 或 ?CONCURRENT_REQUESTS_PER_IP? 選項。它會產(chǎn)生類似的效果,但有一些重要的區(qū)別:

  • 因為下載延遲很小,偶爾會有突發(fā)的請求;
  • 通常,非200(錯誤)響應(yīng)的返回速度比常規(guī)響應(yīng)快,因此,只要有一個較小的下載延遲和硬并發(fā)限制,當服務(wù)器開始返回錯誤時,爬蟲程序?qū)⒏斓叵蚍?wù)器發(fā)送請求。但這與爬蟲應(yīng)該做的相反——如果出現(xiàn)錯誤,放慢速度更有意義:這些錯誤可能是由高請求率引起的。

AutoThrottle 沒有這些問題。

節(jié)流算法

AutoThrottle 算法根據(jù)以下規(guī)則調(diào)整下載延遲:

  1. 蜘蛛總是以下載延遲開始 ?AUTOTHROTTLE_START_DELAY? ;
  2. 當收到響應(yīng)時,目標下載延遲計算為 ?latency / N? 在哪里? ?latency? 是響應(yīng)的延遲,并且 ?N? 是 ?AUTOTHROTTLE_TARGET_CONCURRENCY? .
  3. 下一個請求的下載延遲設(shè)置為上一個下載延遲和目標下載延遲的平均值;
  4. 不允許非200響應(yīng)的延遲減少延遲;
  5. 下載延遲不能小于 ?DOWNLOAD_DELAY? 或大于 ?AUTOTHROTTLE_MAX_DELAY?

注解

autothrottle擴展支持并發(fā)和延遲的標準 Scrapy 設(shè)置。這意味著它將尊重 ?CONCURRENT_REQUESTS_PER_DOMAIN? 和 ?CONCURRENT_REQUESTS_PER_IP? 選項,并且從不將下載延遲設(shè)置為低于  ?DOWNLOAD_DELAY? .

在scrappy中,下載延遲是以建立TCP連接和接收HTTP頭之間所經(jīng)過的時間來度量的。

注意,在一個合作的多任務(wù)環(huán)境中,這些延遲很難精確測量,因為scrapy可能正忙于處理spider回調(diào),例如,無法參加下載。然而,這些延遲仍然應(yīng)該對Scrapy(最終是服務(wù)器)有多忙給出一個合理的估計,并且這個擴展是在這個前提下構(gòu)建的。

設(shè)置

用于控制 AutoThrottle 擴展的設(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)詳細信息,請參閱 它是如何工作的 .

AUTOTHROTTLE_ENABLED

違約: ?False?

啟用AutoThrottle 擴展。

AUTOTHROTTLE_START_DELAY

違約: ?5.0?

初始下載延遲(秒)。

AUTOTHROTTLE_MAX_DELAY

違約: ?60.0?

在高延遲情況下設(shè)置的最大下載延遲(秒)。

AUTOTHROTTLE_TARGET_CONCURRENCY

違約: ?1.0?

Scrapy的平均請求數(shù)應(yīng)與遠程網(wǎng)站并行發(fā)送。

默認情況下,autothrottle會調(diào)整延遲以向每個遠程網(wǎng)站發(fā)送單個并發(fā)請求。將此選項設(shè)置為更高的值(例如 ?2.0? )以增加遠程服務(wù)器的吞吐量和負載。下層 ?AUTOTHROTTLE_TARGET_CONCURRENCY? 價值(例如) ?0.5? )讓爬蟲人更加保守和禮貌。

注意 ?CONCURRENT_REQUESTS_PER_DOMAIN? 和 ?CONCURRENT_REQUESTS_PER_IP? 啟用 AutoThrottle 擴展功能時,仍會遵循選項。這意味著如果 ?AUTOTHROTTLE_TARGET_CONCURRENCY? 設(shè)置為大于的值 ?CONCURRENT_REQUESTS_PER_DOMAIN? 或 ?CONCURRENT_REQUESTS_PER_IP? ,爬蟲程序?qū)o法達到此數(shù)量的并發(fā)請求。

在每個給定的時間點上,scrapy可以發(fā)送的并發(fā)請求多于或少于 ?AUTOTHROTTLE_TARGET_CONCURRENCY? ;這是爬蟲嘗試接近的建議值,而不是硬限制。

AUTOTHROTTLE_DEBUG

違約: ?False?

啟用 AutoThrottle 調(diào)試模式,該模式將顯示收到的每個響應(yīng)的統(tǒng)計信息,以便您可以看到如何實時調(diào)整節(jié)流參數(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號