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?