在Python中,DOWNLOAD_DELAY和time.sleep有什么区别?

时间:2018-08-23 00:35:25

标签: python scrapy

正如标题所述,如果我设置'DOWNLOAD_DELAY':2,在每个请求中它与time.sleep(2)有什么不同? enter image description here 感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

DOWNLOAD_DELAY ,是一种限制(以秒为单位)从同一网站上连续下载页面的方法,可以在HERE

time.sleep()相比,它取决于DOWNLOAD_DELAY的实现方式。 time.sleep()会暂停所有执行,直到经过指定的时间为止,这将对您的代码产生不同的影响,具体取决于您和 WHERE 正在使用它。可以在time.sleep中找到HERE的文档。

如果要减慢页面下载速度,请使用DOWNLOAD_DELAY,如果要在任何给定时间暂停执行代码,请使用time.sleep

答案 1 :(得分:1)

DOWNLOAD_DELAY是Scrapy设置:

  

从同一网站下载连续页面之前,下载程序应等待的时间(以秒为单位)。这可以用来限制爬网速度,以避免对服务器造成太大的冲击。

time.sleep是一个Python库函数,可以给您的代码增加延迟。

Scrapy可以同时下载多个项目(例如,请参见CONCURRENT_ITEMSCONCURRENT_REQUESTS_PER_IP)。 DOWNLOAD_DELAY将在对目标的请求之间增加延迟,并注意请求之间的睡眠逻辑。使用time.sleep将需要您自己处理很多逻辑,即while(更多请求):make_a_request(...)time.sleep(2 seconds)等。

首选使用DOWNLOAD_DELAY,因为您要让Scrapy做到最好。但是,延迟的含义会根据其他设置(例如CONCURRENT_REQUESTS_PER_IP)而改变:

  

[I] f CONCURRENT_REQUESTS_PER_IP非零,下载延迟是按IP而不是按域强制的。