【发布时间】:2015-10-14 03:44:27
【问题描述】:
我的蜘蛛有严重的内存泄漏。运行 15 分钟后,它的内存为 5gb,scrapy 告诉(使用 prefs() )有 900k 个请求对象,仅此而已。如此多的生活请求对象可能是什么原因?请求只会上升,不会下降。所有其他对象都接近于零。
我的蜘蛛是这样的:
class ExternalLinkSpider(CrawlSpider):
name = 'external_link_spider'
allowed_domains = ['']
start_urls = ['']
rules = (Rule(LxmlLinkExtractor(allow=()), callback='parse_obj', follow=True),)
def parse_obj(self, response):
if not isinstance(response, HtmlResponse):
return
for link in LxmlLinkExtractor(allow=(), deny=self.allowed_domains).extract_links(response):
if not link.nofollow:
yield LinkCrawlItem(domain=link.url)
这里是prefs()的输出
HtmlResponse 2 oldest: 0s ago
ExternalLinkSpider 1 oldest: 3285s ago
LinkCrawlItem 2 oldest: 0s ago
Request 1663405 oldest: 3284s ago
在某些网站上,100k 抓取页面的内存可以达到 40gb 标记(例如,在 victorinox.com 上,100k 抓取页面标记达到 35gb 的内存)。在其他方面,它要小得多。
UPD。
【问题讨论】:
标签: python memory-leaks scrapy scrapyd