我正在使用scrapy从许多不同的域并行下载页面。我有成千上万的页面可供下载,因此性能非常重要。
不幸的是,当我描述了scrapy的速度时,每秒只能得到几页。确实,平均每秒约2页。以前,我已经编写了自己的多线程spider程序,以每秒执行数百页的工作-我想肯定,scrapy的使用Twisted等等可以实现类似的魔术。
我如何加快刮y速度?我真的很喜欢这个框架,但是这个性能问题对我来说可能是一个难题。
这是settings.py文件的相关部分。我错过了一些重要的设置吗?
LOG_ENABLED = False CONCURRENT_REQUESTS = 100 CONCURRENT_REQUESTS_PER_IP = 8
一些参数:
我过去曾遇到过这个问题……大部分情况是我用的老技巧解决的。
执行本地缓存DNS。
通常,当你拥有如此高的CPU使用率同时访问远程站点时,这是因为scrapy试图解析URL。
并且,请记住将主机(/etc/resolv.conf)上的dns设置更改为本地缓存DNS服务器。
首先,它会很慢,但是一旦它开始缓存,它就会更有效地解决你将看到的巨大改进。
希望这对你的问题有所帮助!