Google App Engine批量下载
我在用批量下载从数据存储中下载数据(超过1GB)。突然,我的网络出了问题,下载过程在中间停止了。我想从停止的地方继续下载。但是当我尝试时,出现了以下错误:
File "/Users/FYP/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/datastore_types.py", line 156, in ValidateString
(name, value, typename(value)))
BadArgumentError: kind should be a string; received 3 (a int):
[INFO ] [WorkerThread-2] Backing off due to errors: 1.0 seconds
[INFO ] An error occurred. Shutting down...
[ERROR ] Error in WorkerThread-0: kind should be a string; received 3 (a int):
这是我用来下载数据的代码:
appcfg.py download_data --config_file=bulkloader.yaml --batch_size=200 --filename=final80_2.csv
--kind=TasksTime1 --url=http://abc.appspot.com/_ah/remote_api --rps_limit=40
--db_filename=bulkloader-progress-20110429.141103 --result_db_filename=bulkloader-results-20110429.141103
我该怎么解决这个问题呢?
2 个回答
0
我也遇到过同样的问题:
Error in WorkerThread-0: kind should be a string; received 3 (a int)
删除所有的 *.sql3 和 *.csv 文件后,这个错误就不再出现了。很明显,恢复功能是坏掉了,但如果你想再次进行批量下载,就必须先把它关掉。
通常情况下,我们会把批量加载的命令放在一个函数里,这样可以提前清理这些文件。
1
只需要重新运行相同的命令。根据文档的说明:
如果传输中断了,你可以使用 --db_filename=... 参数从中断的地方继续传输。这个参数的值是工具创建的进度文件的名字,这个名字可以是你在开始传输时用 --db_filename 参数提供的名字,或者是一个包含时间戳的默认名字。这是基于你已经安装了sqlite3,并且没有通过 --db_filename=skip 禁用进度文件的前提下。
你在第一次执行时指定了一个 db_filename
,所以如果你重新运行这个命令,它应该能找到已有的文件,并从中断的地方继续。