sitemapspider example crawl python concurrency scrapy

python - example - scrapy sitemapspider



Scrapy download_delay vs. max_concurrent_requests_per_domain (1)

Desde el código fuente del descargador

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

Entonces parece que el comportamiento sería el mismo que este , que dice

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

Así que no creo que consigas mucha concurrencia con un gran download_delay. He ejecutado rastreadores en una red lenta con autotrottling y no hubo más de 2-3 solicitudes simultáneas a la vez.

Estoy muy confundido sobre las diferencias e interacciones entre DOWNLOAD_DELAY y MAX_CONCURRENT_REQUESTS_PER_DOMAIN en Scrapy.

¿La demora de descarga afecta la cantidad máxima de solicitudes simultáneas por dominio, por ejemplo, si configuro un retraso de 10 segundos pero permití 8 solicitudes simultáneas por dominio, esas solicitudes simultáneas no se dispararán concurrentemente sino escalonadas de acuerdo con la demora de descarga, o ser despedido al mismo tiempo, pero la descarga de las respuestas se escalonó? ¿Hay alguna razón por la que DOWNLOAD_DELAY no se llame REQUEST_DELAY ?

Por ejemplo, ¿cuál sería el cálculo del rendimiento de la parte posterior del sobre en el siguiente escenario?

  • start_urls contiene 100 URL para un dominio dado
  • MAX_CONCURRENT_REQUESTS_PER_DOMAIN = 8
  • DOWNLOAD_DELAY = 3
  • supongamos que el servidor tarda 2 segundos en generar una respuesta
  • Supongamos que no generamos más URL que las que ya están en start_urls

¿Cuánto tiempo le tomaría a la araña asociada procesar esta cola?