2015-01-02 92 views
4

我對Scrapy中的DOWNLOAD_DELAYMAX_CONCURRENT_REQUESTS_PER_DOMAIN之間的差異和相互作用感到困惑。Scrapy download_delay與max_concurrent_requests_per_domain

下載延遲是否會影響每個域的最大併發請求數,例如,如果我設置了10秒的延遲時間,但每個域允許8個併發請求,那麼這些併發請求不會同時被觸發,而是根據下載延遲,還是會同時被解僱,但下載的答覆是錯開的?是否有任何理由DOWNLOAD_DELAY不叫REQUEST_DELAY

例如,會背的最信封的吞吐量計算是在以下情況下什麼:

  • start_urls有效,對於一個給定域
  • MAX_CONCURRENT_REQUESTS_PER_DOMAIN = 8
  • DOWNLOAD_DELAY = 3
  • 100個網址假設服務器需要2秒鐘來生成響應
  • 假設我們不會再生成比中已有的更多的URL

需要多長時間才能處理該隊列?

回答

1

從下載source代碼

conc = self.ip_concurrency if self.ip_concurrency else self.domain_concurrency 
conc, delay = _get_concurrency_delay(conc, spider, self.settings) 

這麼看來的行爲將是相同this,它說

This setting also affects DOWNLOAD_DELAY: if CONCURRENT_REQUESTS_PER_IP is non-zero, download delay is enforced per IP, not per domain. 

所以我不認爲你會實現與多併發一個很大的download_delay。我在具有自動限制的慢速網絡上運行爬網程序,並且一次只有不超過2-3個併發請求。

+0

Upvoted用於引用源中的特定行。 – yangmillstheory