使用自动节流

与控制最大并发级别密切相关的是限制的概念。 网站处理请求的能力各不相同,无论是跨多个网站还是在不同时间在单个网站上。 在响应时间较慢的时期,减少这段时间内的请求数量是有意义的。 手动监控和调整可能是一个繁琐的过程。

对我们来说幸运的是,scrapy 还提供了通过名为 AutoThrottle 的扩展来执行此操作的功能。

如何做

可以使用 AUTOTHROTTLE_TARGET_CONCURRENCY 设置轻松配置 AutoThrottle:

process = CrawlerProcess({
    'AUTOTHROTTLE_TARGET_CONCURRENCY': 3
})
process.crawl(Spider)
process.start()

工作原理

scrapy 跟踪每个请求的延迟。 使用该信息,它可以调整对特定域的请求之间的延迟,以便对该域同时活动的 AUTOTHROTTLE_TARGET_CONCURRENCY 请求不超过 AUTOTHROTTLE_TARGET_CONCURRENCY 请求,并且请求在任何给定时间跨度内均匀分布。

还有更多