2015-01-02 2 views
4

나는 Scrapy에서 DOWNLOAD_DELAYMAX_CONCURRENT_REQUESTS_PER_DOMAIN의 차이점과 상호 작용에 대해 매우 혼란 스럽습니다.치료 download_delay 대 max_concurrent_requests_per_domain

다운로드 지연은 도메인 당 최대 동시 요청 수에 영향을 미칩니 까? 예를 들어, 지연 10 초를 설정했지만 도메인 당 8 개의 동시 요청을 허용하는 경우, 동시 요청은 동시에 발생하지 않지만 다운로드 지연에 따라 시차를 둘 것입니다 , 또는 그들은 동시에 해고 될 것이지만 응답의 다운로드는 비틀 거리는가? 어떤 이유가 있습니까 REQUEST_DELAY라고하지 않습니까? 예를 들어

백 - 중 - 봉투 처리량 계산은 다음과 같은 시나리오에서 무엇을 할 것입니다 :

  • start_urls는 주어진 도메인
  • MAX_CONCURRENT_REQUESTS_PER_DOMAIN = 8
  • DOWNLOAD_DELAY = 3
  • 100 개 URL을 보유 서버가 응답을 생성하는 데 2 ​​초가 걸린다고 가정합니다.
  • 이미 생성 된 것보다 더 많은 URL을 생성하지 않는다고 가정합니다. start_urls

대기열을 처리하는 데 관련 기간이 얼마나 걸립니까?

다운로더에서

답변

1

에게 source 코드는

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

그래서 행동이

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

그래서 난 당신이 훨씬 동시성을 달성 할 수있을 거라 생각하지 않는다라고하는, this와 동일 할 것 같다 큰 download_delay. 나는 autotrottling과 느린 네트워크에서 크롤 러를 실행 한 번에 2-3 개 이상의 동시 요청이 없습니다.

+0

소스의 특정 라인을 참조하는 데 사용됩니다. – yangmillstheory