在前一篇文章里面我获取到一个页面的信息后,要进行相应的处理,页面的信息包括文字、图片链接和下载链接。这些信息都杂乱无章,我的目的是把这些信息按原来的顺序输出,这就有一个问题,我应该选择怎么的储存方式,由于GAE的数据结构是可以由用户自定义的,所以你想怎么储存都行。
开始的时候,新建一个StringProperty
的Model,把所有的信息都一个一个地存进去;然后如果是图片链接的话,在新建一个BlobProperty
,把图片抓取之后也扔进去。这种方法在本地调试没有问题,但是上传到GAE的服务器的时候问题就出现了。
问题1:由于我这些操作都是通过访问一个页面进行的,每一次都出现DeadlineExceededError: ApplicationError: 5
,由于游览器访问一个页面超过5秒钟都没有响应,服务器就会终止请求,每张图片储存都要先从源地址抓取,然后再储存在GAE上,而且不止一张图片,GAE的服务器快也不可能5秒钟搞定。
问题2:GAE每天分别有5万次数据库的读取和写入。而我的那种储存方式就耗掉了5%的份额,很明显要换一种数据储存的方式
现在改进的方法:建一个Model类,里面包括3个StringListProperty
,第一个用来储存所有的有效信息,按顺序扔进去,第二个用1,2,3来分别表示文字、图片链接和下载链接,用来做类别。第三个是用来保存id的序号,保存图片的时候要用到。
而储存图片则每次保存5张,写一个循环来完成,不过偶尔也会出现超时的错误,有待改善。