App引擎 - 上传大文件并将数据从中解析到数据存储区

时间:2010-02-05 16:13:49

标签: python google-app-engine upload

我有一个包含~16,000行实体信息的文件。用户应该使用HTML上传表单上传文件,然后系统通过逐行读取并创建put()实体到数据存储区来处理它。

我受限于30秒的请求时间限制。我使用任务队列,强制HTML重定向等尝试了很多不同的解决方法,但没有任何方法可以帮助我。

我正在使用强制HTML重定向来删除所有数据,但这很有效,尽管很慢。 (第四个答案:Delete all data for a kind in Google App Engine

我似乎无法将此应用于我的上传问题,因为我的方法必须是POST方法。某种方式有解决方案吗?示例代码将非常受欢迎,因为我对Web开发一般都很陌生。

2 个答案:

答案 0 :(得分:2)

为了解决类似的问题,我将数据集存储在具有单个TextProperty的模型中,然后生成一个任务队列任务:

  1. 如果有任何数据集,则从数据存储中获取数据集。

  2. 检查数据集的长度是否为< = N,其中N是您可以放置​​()而没有超时的少量实体。我使用5.如果是这样,编写单个实体,删除数据集记录,并生成任务的新副本。

  3. 如果数据集大小大于N,则将其拆分为相同格式的N个部分,并将其写入数据存储区,删除原始实体,并生成任务的新副本。

    < / LI>

答案 1 :(得分:0)

如果您这样做是为了批量加载数据,为什么不使用the bulk loader

如果您需要非管理员用户可以访问该界面,那么,按照建议,您需要将文件分成适当大小的块(通过每块n行块)将它们放入数据存储区,然后启动处理他们每个人的任务。