1

我没有成功使用官方提供的bulkloader 选项,所以我编写了自己的bulkloader 脚本(实际上是post 处理程序,它会将实体从csv 增量加载到数据存储中)。

该解决方案的工作方式如下:
1. 我将从 csv 文件复制数据
2. 将其粘贴到应用程序表单中的文本区域
3. 发布表单
4. 处理程序解析标题(列名)的传入文本
5 . 将其余行存储在列表
6. 从列表中递增地获取 100 行,并为每一行创建并存储一个实体(实体的类型从表单中的选择字段中指定的类型解析)

现在,这种技术可以在我的开发服务器上用于最多 1000 行的小输入,除此之外它会显示以下错误:

回溯(最近一次通话最后):
文件“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/ext/webapp/ init .py”,第 513 行,调用
文件“/host/_Hive/ Lab/ACTIVE WORKS/UG VOTES/google_appengine/myApps/ugvotes/ugvotes.py”,第 241 行,在帖子
文件“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/ext/db/ init .py”,第 893 行,放入
文件“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/api/datastore.py”,第 291 行,放入
文件“/host/_Hive/Lab /ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/api/datastore.py”,第 195 行,在 _MakeSyncCall
文件“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/api/apiproxy_stub_map.py”,第 499 行,在 check_success
文件“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/ google/appengine/api/apiproxy_rpc.py”,第 149 行,在 _WaitImpl
文件中“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/api/datastore_file_stub.py”,第 863 行,在 MakeSyncCall
文件中“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/api/apiproxy_stub.py”,第 80 行,在 MakeSyncCall
文件中“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google /appengine/api/datastore_file_stub.py”,第 933 行,在 _Dynamic_Put 中
文件“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/google/appengine/api/datastore_file_stub.py”,第 806 行,在 __WriteDatastore
文件“/host/_Hive/Lab/ACTIVE WORKS/UG VOTES/google_appengine/ google/appengine/api/datastore_file_stub.py",第 836 行,在 __WritePickled
IOError:[Errno 24] 打开的文件太多:'/tmp/tmpOfgvm3'

起初我认为这是由于开发服务器的限制而导致的错误,但是当我尝试从生产服务器执行相同的任务时,我收到以下错误:

错误:服务器错误 服务器遇到错误,无法完成您的请求。

如果问题仍然存在,请报告您的问题并提及此错误消息和导致它的查询。

谁知道可能出了什么问题,我能做些什么呢?

谢谢。

4

1 回答 1

0

这是一个已知问题:Python dev SDK 1.3.8 datastore_file_stub.py 似乎泄漏文件句柄
有一个非官方的补丁可用。

于 2010-11-27T13:25:58.040 回答