如何创建GAE数据存储的本地副本?

时间:2010-04-19 22:52:26

标签: google-app-engine google-cloud-datastore

我想制作GAE应用程序的客户端版本,用于存储在线版本的确切数据。(myapp.appspot.com)如果我可以使用sdk代替,是否有任何库或工具可以在线同步和sdk版本?我尝试使用bulkloader,但我无法将下载的数据加载到本地SDK?请帮忙。

3 个答案:

答案 0 :(得分:29)

this article中所述(链接已更新,感谢Zied Hamdi)

您只需启用远程api

即可
builtins:
- remote_api: on

更新您的应用程序,然后运行以下命令:

appcfg.py download_data -A s~YOUR_APP_NAME --url=http://YOUR_APP_NAME.appspot.com/_ah/remote_api/ --filename=data.csv
appcfg.py --url=http://localhost:8080/_ah/remote_api/ --filename=data.csv upload_data .

在最新的AppEngine SDK上编辑2016年4月12日之后:

以上适用于SDK 1.9.0及更高版本。但是对于depreciation of ClientLogin,上述操作会导致错误

03:13 PM Uploading data records.
[INFO    ] Logging to bulkloader-log-20160909.151355
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
[INFO    ] Opening database: bulkloader-progress-20160909.151355.sql3
2016-09-09 15:13:55,175 INFO client.py:578 Refreshing due to a 401 (attempt 1/2)
2016-09-09 15:13:55,176 INFO client.py:804 Refreshing access_token
2016-09-09 15:13:55,312 INFO client.py:578 Refreshing due to a 401 (attempt 2/2)

Recommended by Anssi here,我们可以直接使用API​​服务器而不会遇到此错误。对于典型的dev_appserver启动,您将获得以下输出

INFO     2016-09-09 19:27:11,662 sdk_update_checker.py:229] Checking for updates to the SDK.
INFO     2016-09-09 19:27:11,899 api_server.py:205] Starting API server at: http://localhost:52497
INFO     2016-09-09 19:27:11,905 dispatcher.py:197] Starting module "default" running at: http://localhost:8080
INFO     2016-09-09 19:27:11,918 admin_server.py:116] Starting admin server at: http://localhost:8000

而不是上面的上传使用API​​端口,在这种情况下

appcfg.py --url=http://localhost:52497/_ah/remote_api/ --filename=data.csv upload_data .

答案 1 :(得分:15)

有关如何下载和上传整个数据存储区的详细信息,请参阅the docs。只需从生产中批量下载,然后批量上传到本地数据存储区。

但请记住,本地数据存储不是为处理大量数据而设计的 - 您可能会遇到性能或内存问题。

答案 2 :(得分:2)