在Google App Engine中使用hash和marshal持久化模块,快速判断数据库条目是否已经存在
本人在用GAE写爬虫的时候,遇到判断重复URL来防止重复抓取的问题,但是由于GAE数据库的限制(db.ListProperty每个记录不能保存超过5000个元素),经测试发现直接筛选数据库中的属性来判断是否有重复链接会耗费大量CPU时间(甚至有时候会花费0.3秒来判断是否已经抓过某个网页),而利用建立哈希表来解决也没有多少改善.经分析,根本问题在于hash颗粒度太小,读取数据库时使用GQL难免会比