Scrapy设置之Performance概览

来源:互联网 发布:mac cf 编辑:程序博客网 时间:2024/06/05 05:47

性能方面的设置选项可以让我们根据工作量来调整爬虫的性能。

CONCURRENT_REQUESTS设置了最多可以同时处理的请求数目,它保护了你机器的输出带宽不超出负载,以防程序在同时爬很多个不同的站点(域名/IP)。不过除非是这种情况,一般而言还是CONRRENT_REQUEST_PER_DOMAINCONCURRENT_REQUEST_PER_IP更加有用。如果CONCURRENT_REQUEST_PER_IP是非零值,那么CONCURRENT_PER_DOMAIN设置项就会被忽略掉。要注意的是这些设置并不是以每秒为单位的,例如,假设你的CONCURRENT_REQUESTS = 16,而平均每个请求花费的时间是0.25s,那么上限就是每秒16 / 0.25 = 64个请求。

CONCURRENT_ITEMS设置了对于每个响应最多可以同时处理的Item的数目。大多数情况下这个设置项作用不大,因为经常是每个页面或者请求的响应只有一个Item。默认值是100,如果减小这个值,比如说减小到10或者1,甚至有可能会发现程序的性能会根据每个请求中Item的数目和pipelines的复杂度而有所提升。要注意一点,这个值的单位是每个请求,如果你的CONCURRENT_REQUESTS = 16,CONCURRENT_ITEMS= 100,那么就意味着最多会有1600个Items试图写到数据库里。通常情况下可以把这个值设置得小一些。

关于下载的方面,DOWNLOAD_TIMEOUT决定了下载器在取消一个请求之前的等待时间,默认情况下是180s,对于大多数情况下是远远够用的(如果是16个并发请求的话,180s就意味着一分钟才5个页面),建议你把这个值设置得小一些,比如如你有超时的问题的话,可以设置为10s。默认情况下,Scrapy把每次下载之间的延时设置为0,以加速网页的抓取。可以通过修改DOWNLOAD_DELAY把下载延时设置大一些,因为有些网站会根据请求的频率来判断对方是否是一个网络爬虫。设置了DOWNLOAD_DELAY之后,下载的延时会有一个正负50%的随机概率,不过也可以通过设置RANDOMIZE_DOWNLOAD_DELAYFalse来禁用此功能。

最后,为了加快DNS查询,默认情况下有一个内存中的DNS缓存,可以通过DNSCACHE_ENABLED来设置。

0 0