网页爬虫 - pyspider的爬取任务队列有没有数量限制
本文介绍了网页爬虫 - pyspider的爬取任务队列有没有数量限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
数据库中存了大概一百万个url
,我需要从数据库中取出这些url
,并将它们加入到爬取的任务队列中去。
借用另一位同学的问题描述(只是我的情况更加极端):
@every(minutes=24 * 60)
def on_start(self):
self.key_word_rank_page()
pass
def key_word_rank_page(self):
i = 0; page 参数从0开始的
while i <= 1000000:
keywordrank_url = "https://www.douban.com/more/getmore.html?page=%s&genreIds="%(i)
self.crawl(url=keywordrank_url, callback=self.process_keyword)
i += 1;
pass
这样,会不会存在丢失任务(数据)的风险?
解决方案
没有数量限制,但是存在三个瓶颈:
- 任务是先全部生成在内存中,再发送到队列的,会导致很高的内存占用。
- 队列有容量限制,一次发不完
- scheduler 为了防止拥塞,在一个处理周期只处理1000条新建任务。
所以建议还是分批发送
这篇关于网页爬虫 - pyspider的爬取任务队列有没有数量限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文