2010-04-19 5 views
21

Я хочу создать клиентскую версию приложения GAE, в котором хранятся точные данные онлайн-версии. (Myapp.appspot.com) Если я могу использовать sdk, это любая библиотека или инструменты для синхронизации онлайн и sdk-версии? Я пытаюсь использовать bulkloader, но я не могу загрузить загруженные данные в локальный SDK? Пожалуйста помоги.Как создать локальную копию хранилища данных GAE?

ответ

15

См. the docs для получения подробных сведений о том, как загрузить и загрузить все хранилище данных. Просто массовая загрузка с производства, а затем массовая загрузка в локальное хранилище данных.

Имейте ввиду, что локальное хранилище данных не предназначено для обработки больших объемов данных - вы можете столкнуться с проблемами производительности или памяти.

+0

Спасибо, Ник, где я могу получить более четкое «как» делать массовую загрузку в местное хранилище данных? На самом деле нужно сделать эту работу для меня. –

+1

См. Раздел «Загрузка данных в сервер разработки» на этой странице. Вы просто указываете дополнительный аргумент командной строки. –

+0

Во всяком случае, Ник .. я установил 1.3.3 sdk и испытываю некоторую ошибку в объемной загрузке около 6000 записей, которые останавливаются на записи 145. И бросок исключения, когда я хочу использовать средство просмотра хранилища данных на локальной консоли SDK. Что не так? –

28

Как объяснен в this article (ссылка обновляется, благодаря Zied Хамди)

Вам просто нужно включить удаленный 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 . 

Редактировать для после 12 апреля 2016 года на последней версии AppEngine SDK:

Вышеупомянутые работы для 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 . 
+5

Чтобы заставить это работать локально для меня, мне также нужно было добавить -A dev ~ YOUR_APP_NAME к параметрам upload_data. – ahanson

+1

У меня возникла следующая ошибка при выполнении этапа upload_data: «google.appengine.api.datastore_errors.BadRequestError: приложение« dev ~ my_app_name »не может получить доступ к данным приложения« my_app_name ». Я решил это, удалив '.' в конце строки. Поэтому я написал: appcfg.py --url = http: // localhost: 8080/_ah/remote_api/--filename = data.csv upload_data –

+1

Это только для приложений python? – morpheus05

Смежные вопросы