应用引擎 - 上传大文件并解析数据到数据存储
我有一个文件,里面大约有16,000行关于某些实体的信息。用户需要通过一个HTML上传表单来上传这个文件,然后系统会逐行读取这些信息,并把实体放到数据存储中。
不过,我受到30秒请求时间限制的影响。我尝试了很多不同的解决办法,比如使用任务队列、强制HTML重定向等等,但都没能解决我的问题。
我现在使用强制HTML重定向来删除所有数据,这个方法虽然有效,但速度非常慢。(可以参考这里的第四个答案:在Google App Engine中删除某种类型的所有数据)
我似乎无法将这个方法应用到我的上传问题上,因为我的方法必须是POST方式。不知道有没有什么解决方案?如果能提供一些示例代码就太好了,因为我对网页开发还很陌生。
2 个回答
0
如果你是为了批量加载数据,那为什么不使用批量加载工具呢?
如果你需要让非管理员用户也能使用这个界面,那么就像建议的那样,你需要把文件分成适当大小的块(比如每次取n行),然后把这些块放入数据存储中,并启动一个任务来处理每一个块。
2
为了解决类似的问题,我把数据集存储在一个模型里,这个模型里有一个文本属性。然后我创建了一个任务队列任务,具体步骤如下:
从数据存储中获取数据集,如果还有剩余的话。
检查数据集的长度是否小于等于N,N是一个你可以在不超时的情况下放入的实体数量。我用的是5。如果满足这个条件,就写入这些单独的实体,删除数据集记录,然后再创建一个新的任务。
如果数据集的大小大于N,就把它分成N个部分,格式保持不变,然后把这些部分写入数据存储,删除原来的实体,再创建一个新的任务。