2010-04-19 8 views
21

Je souhaite créer une version client de l'application GAE qui stocke les données exactes de la version en ligne (myapp.appspot.com) Si je peux utiliser sdk à la place, y a-t-il une bibliothèque ou des outils pour synchroniser la version en ligne et sdk? J'essaye d'employer le chargeur en bloc mais je ne peux pas charger des données téléchargées au SDK local? S'il vous plaît aider.Comment créer une copie locale du magasin de données GAE?

Répondre

15

Voir the docs pour plus de détails sur la façon de télécharger et de télécharger la totalité de votre banque de données. Il suffit de télécharger en masse depuis la production, puis de télécharger en masse vers votre banque de données locale. Toutefois, gardez à l'esprit que la banque de données locale n'est pas conçue pour gérer de gros volumes de données. Vous pouvez rencontrer des problèmes de performances ou de mémoire.

+0

Merci, Nick, où je peux obtenir plus de "comment" faire du téléchargement en masse sur le magasin de données local? Vraiment besoin de faire ce travail pour moi. –

+1

Voir la section «chargement des données dans le serveur de développement» sur cette page. Vous spécifiez simplement un argument de ligne de commande supplémentaire. –

+0

Quoi qu'il en soit, Nick .. J'ai installé 1.3.3 sdk et éprouver une erreur de chargement en vrac environ 6000 enregistrements, qui s'arrêtent sur l'enregistrement 145. Et exception jeter quand je veux utiliser la visionneuse de banque de données sur la console SDK locale. Qu'est-ce qui ne va pas? –

28

Comme expliqué dans this article (lien mis à jour, grâce à Zied Hamdi)

Vous devez simplement activer la api à distance

builtins: 
- remote_api: on 

Mettez à jour votre application, puis exécutez les commandes suivantes:

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 . 

Modifier pour après le 12 avril 2016 sur le dernier SDK AppEngine:

Ce qui précède fonctionne pour SDK version 1.9.0 et avant. Cependant, avec le depreciation of ClientLogin, ce qui précède provoquera une erreur de

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, nous pouvons utiliser le serveur API directement sans courir dans cette erreur. Pour une start-up de dev_appserver typique, vous obtenez la sortie suivante

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 

au lieu de ce qui précède pour le téléchargement utilisez le port API, dans ce cas

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

Pour que cela fonctionne localement pour moi, je devais également ajouter l'option -A dev ~ YOUR_APP_NAME aux options upload_data. – ahanson

+1

J'ai l'erreur suivante lors de l'étape upload_data: 'google.appengine.api.datastore_errors.BadRequestError: l'application "dev ~ my_app_name" ne peut pas accéder à l'application "my_app_name"' s data '. J'ai résolu cela en enlevant le '.' à la fin de la ligne. J'ai donc écrit: appcfg.py --url = http: // localhost: 8080/_ah/remote_api/--fichier = data.csv upload_data –

+1

Est-ce seulement pour les applications python? – morpheus05

Questions connexes