爬虫框架scrapy篇八——settings内的相关操作

1、并发请求的相关参数

1.1、设置并发请求的最大数量

CONCURRENT_REQUESTS

CONCURRENT_REQUESTS = 16  # 全局并发请求,下载器将执行的并发(即同时)请求的最大数量
# CONCURRENT_REQUESTS_PER_IP = 16  # 指任何单个IP执行的并发请求的最大数量,
# CONCURRENT_REQUESTS_PER_DOMAIN = 16  # 指任何单个域名执行的并发(即同时)请求的最大数量

CONCURRENT_REQUESTS
全局并发请求 (CONCURRENT_REQUESTS): Scrapy会维护一个队列,其中包含所有待处理的请求。当队列中的请求数小于 CONCURRENT_REQUESTS 时,Scrapy会继续添加新的请求到队列中。一旦达到上限,Scrapy将停止添加新的请求,直到有请求完成并从队列中移除。
CONCURRENT_REQUESTS_PER_IP
IP并发请求 (CONCURRENT_REQUESTS_PER_IP): Scrapy会为每个IP地址维护一个独立的队列。对于每个IP地址,如果其队列中的请求数小于 CONCURRENT_REQUESTS_PER_IP,Scrapy将继续向该IP地址发送请求。否则,它会暂停向该IP地址发送新请求,直到有请求完成并从队列中移除。
CONCURRENT_REQUESTS_PER_DOMAIN
域名并发请求 (CONCURRENT_REQUESTS_PER_DOMAIN): Scrapy会为每个域名维护一个独立的队列。对于每个域名,如果其队列中的请求数小于 CONCURRENT_REQUESTS_PER_DOMAIN,Scrapy将继续向该域名发送请求。否则,它会暂停向该域名发送新请求,直到有请求完成并从队列中移除。

1.2 延迟时间

DOWNLOAD_DELAY

# 设置在每次请求之间等待1秒
DOWNLOAD_DELAY = 1

DOWNLOAD_DELAY 是一个浮点数或整数,表示在每次请求之间等待的秒数。默认值通常为 0,即没有延迟。

1.3最大并发数和延迟时间

CONCURRENT_REQUESTS和DOWNLOAD_DELAY

现在假设一个场景
DOWNLOAD_DELAY = 1
CONCURRENT_REQUESTS =20
当我们有100个请求的时候,需要多少秒呢?
这里分为两个情况:

第一个情况
(请求一秒内可以完成)
我们的延迟时间是1秒,
所以每一个请求之间的延迟都是1秒,
所以100个请求需要100秒才能完成

第二种情况
(请求需要很久,大于20秒以上,比如下载文件)
我们的延迟时间是1秒,
所以每一个请求之间的延迟都是1秒,
当到第20秒的时候,达到最大并发数20,
这时候即使到21秒,也不会进行第21个请求,
这时候100个请求需要100秒以上甚至几分钟才能完成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容