AutoThrottle扩展

这是基于Scrapy服务器和您正在爬行的网站的加载自动调节爬网速度的扩展。

设计目标

更好的网站,而不是使用默认的下载延迟为零

自动调整刮擦到最佳的爬行速度,所以用户不必调整下载延迟找到最佳的爬行速度。用户只需要指定它允许的最大并发请求,其余的则是扩展名。

怎么运行的

AutoThrottle扩展动态调整下载延迟,使Spider平均向每个远程网站发送AUTOTHROTTLE_TARGET_CONCURRENCY并发请求。

它使用下载延迟来计算延迟。主要思想如下:如果服务器需要延迟秒响应,则客户端应发送每个延迟/ N秒的请求以使N个请求并行处理。

而不是调整延迟,您可以设置一个小的固定下载延迟,并使用CONCURRENT_REQUESTS_PER_DOMAIN或CONCURRENT_REQUESTS_PER_IP选项对并发施加硬限制。它会产生类似的效果,但有一些重要的区别:

因为下载延迟很小,偶尔会有一些请求;

通常,非200(错误)响应可以比常规响应更快地返回,因此,当服务器启动返回错误时,小的下载延迟和硬并发限制爬网程序将向服务器发送请求。但这与履带式应用程序的做法相反 - 如果发生错误,则减速更有意义:这些错误可能是由高请求率引起的。

AutoThrottle没有这些问题。

调节算法

AutoThrottle算法根据以下规则调整下载延迟:

蜘蛛总是以AUTOTHROTTLE_START_DELAY的下载延迟开始;

当接收到响应时,目标下载延迟被计算为延迟/ N,其中延迟是响应的延迟,并且N是AUTOTHROTTLE_TARGET_CONCURRENCY。

下一个请求的下载延迟设置为以前的下载延迟和目标下载延迟的平均值;

不允许延迟200个延迟的延迟;

下载延迟不能低于DOWNLOAD_DELAY或大于AUTOTHROTTLE_MAX_DELAY

注意

AutoThrottle扩展符合并发和延迟的标准Scrapy设置。这意味着它将遵守CONCURRENT_REQUESTS_PER_DOMAIN和CONCURRENT_REQUESTS_PER_IP选项,从不将下载延迟设置为低于DOWNLOAD_DELAY。

在Scrapy中,下载延迟是测量建立TCP连接和接收HTTP标头之间所经过的时间。

请注意,这些延迟在协作多任务环境中很难准确测量,因为Scrapy可能正在处理例如Spider回调,并且无法下载。然而,这些延迟仍然应该对Scrapy(最终是服务器)的繁忙程度给出合理的估计,而这个延伸建立在这个前提下。

设置

用于控制AutoThrottle扩展的设置有:

AUTOTHROTTLE_ENABLED

AUTOTHROTTLE_START_DELAY

AUTOTHROTTLE_MAX_DELAY

AUTOTHROTTLE_TARGET_CONCURRENCY

AUTOTHROTTLE_DEBUG

CONCURRENT_REQUESTS_PER_DOMAIN

CONCURRENT_REQUESTS_PER_IP

DOWNLOAD_DELAY

有关更多信息,请参阅如何工作。

AUTOTHROTTLE_ENABLED

默认值:False

启用AutoThrottle扩展。

AUTOTHROTTLE_START_DELAY

默认值:5.0

初始下载延迟(以秒为单位)。

AUTOTHROTTLE_MAX_DELAY

默认值:60.0

在高延迟的情况下设置的最大下载延迟(以秒为单位)。

AUTOTHROTTLE_TARGET_CONCURRENCY

1.1版新功能

默认值:1.0

平均请求次数​​Scrapy应与远程站点并行发送。

默认情况下,AutoThrottle调整延迟以发送单个并发请求到每个远程网站。将此选项设置为更高的值(例如2.0)以增加远程服务器上的吞吐量和负载。较低的AUTOTHROTTLE_TARGET_CONCURRENCY值(例如0.5)使爬虫更加保守和礼貌。

请注意,当启用AutoThrottle扩展时,CONCURRENT_REQUESTS_PER_DOMAIN和CONCURRENT_REQUESTS_PER_IP选项仍然受到尊重。这意味着如果AUTOTHROTTLE_TARGET_CONCURRENCY设置为高于CONCURRENT_REQUESTS_PER_DOMAIN或CONCURRENT_REQUESTS_PER_IP的值,则爬网程序将不会达到此并发请求数。

在每个给定的时间点Scrapy可以发送或多或少的并发请求比AUTOTHROTTLE_TARGET_CONCURRENCY;这是爬行者尝试接近的建议值,而不是硬限制。

AUTOTHROTTLE_DEBUG

默认值:False

启用AutoThrottle调试模式,该模式将显示收到的每个响应的统计信息,因此您可以看到实时调节调节参数。

下一页上一页

results matching ""

    No results matching ""