2010-04-19 8 views
21

Quiero hacer una versión de cliente de la aplicación GAE que almacene datos exactos de la versión en línea. (Myapp.appspot.com) Si puedo usar sdk, ¿hay alguna biblioteca o herramientas para sincronizar en línea y en la versión sdk? ¿Intento usar el cargador masivo pero no puedo cargar datos descargados al SDK local? Por favor ayuda.¿Cómo crear una copia local del almacén de datos de GAE?

Respuesta

15

Consulte the docs para obtener detalles sobre cómo descargar y cargar todo su almacén de datos. Simplemente realice una descarga masiva desde la producción y luego súbala a su almacén de datos local.

Tenga en cuenta, sin embargo, que el almacén de datos local no está diseñado para manejar grandes volúmenes de datos: puede tener problemas de rendimiento o de memoria.

+0

Gracias Nick, ¿dónde puedo obtener un "cómo hacer" más claro de hacer una carga masiva en el almacén de datos local? Realmente necesito hacer que esto funcione para mí. –

+1

Consulte la sección "carga de datos en el servidor de desarrollo" en esa página. Simplemente especifica un argumento de línea de comando adicional. –

+0

De todos modos, Nick ... he instalado 1.3.3 SDK y experimenté un error de carga masiva de aproximadamente 6000 registros, que se detienen en el registro 145. Y tiro de excepción cuando quiero usar el visor de almacenamiento de datos en la consola SDK local. ¿Qué pasa? –

28

Como se explica en this article (enlace actualizado, gracias a Zied Hamdi)

Usted sólo tendrá que habilitar la API remota

builtins: 
- remote_api: on 

actualización de su aplicación a continuación, ejecute los siguientes comandos:

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 . 

Editar para después del 12 de abril de 2016 en el último SDK de AppEngine:

Lo anterior funciona para SDK versión 1.9.0 y anteriores. Sin embargo, con el depreciation of ClientLogin, lo anterior se producirá un error 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, podemos utilizar el servidor de la API directamente sin caer en este error. Para un inicio normal dev_appserver se obtiene el siguiente resultado

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 

en lugar de lo anterior para la carga de utilizar el puerto de la API, en este caso

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

Para que esto funcione localmente para mí, también necesitaba agregar el "A" ~ YOUR_APP_NAME a las opciones de upload_data. – ahanson

+1

Recibí el siguiente error al hacer el paso upload_data: 'google.appengine.api.datastore_errors.BadRequestError: la aplicación "dev ~ my_app_name" no puede acceder a la aplicación "my_app_name"' s data '. Lo resolví eliminando el '.' al final de la linea Así que escribí: appcfg.py --url = http: // localhost: 8080/_ah/remote_api/--filename = data.csv upload_data –

+1

¿Es esto solo para aplicaciones de python? – morpheus05

Cuestiones relacionadas