8

Estoy ejecutando algunos códigos de prueba básicos, con web.py y GAE (Windows 7, Python27). El formulario permite que los mensajes se publiquen en el almacén de datos. Cuando detengo la aplicación y la vuelvo a ejecutar, los datos publicados anteriormente desaparecen. Agregar entidades manualmente usando el administrador (http: // localhost: 8080/_ah/admin/datastore) tiene el mismo problema.El contenido local del almacén de datos de App Engine no persiste

He intentado establecer la ruta en la configuración de aplicaciones que utilizan banderas adicionales:

--datastore_path=D:/path/to/app/ 

(no estaba seguro acerca de la sintaxis allí). No tuvo efecto. Busqué en mi computadora * .datastore, y tampoco pude encontrar ningún archivo, lo cual parece sospechoso, aunque obviamente los datos se almacenan en algún lugar durante la ejecución de la aplicación.

from google.appengine.ext import db 
import web 

urls = (
    '/', 'index', 
    '/note', 'note', 
    '/crash', 'crash' 
) 

render = web.template.render('templates/') 

class Note(db.Model): 
    content = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 

class index: 
    def GET(self): 
      notes = db.GqlQuery("SELECT * FROM Note ORDER BY date DESC LIMIT 10") 
      return render.index(notes) 

class note: 
    def POST(self): 
      i = web.input('content') 
      note = Note() 
      note.content = i.content 
      note.put() 
      return web.seeother('/') 

class crash: 
    def GET(self): 
      import logging 
      logging.error('test') 
      crash 

app = web.application(urls, globals()) 

def main(): 
    app.cgirun() 

if __name__ == '__main__': 
    main() 

ACTUALIZACIÓN: Cuando lo ejecuto a través de línea de comandos, me sale el siguiente:

WARNING 2012-04-06 19:07:31,266 rdbms_mysqldb.py:74] The rdbms API is not available because the MySQLdb library could not be loaded. 
INFO  2012-04-06 19:07:31,778 appengine_rpc.py:160] Server: appengine.google.com 
WARNING 2012-04-06 19:07:31,783 datastore_file_stub.py:513] Could not read datastore data from c:\users\amy\appdata\local\temp\dev_appserver.datastore 
WARNING 2012-04-06 19:07:31,851 dev_appserver.py:3394] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging 
INFO  2012-04-06 19:07:32,052 dev_appserver_multiprocess.py:647] Running application dev~palimpsest01 on port 8080: http://localhost:8080 
INFO  2012-04-06 19:07:32,052 dev_appserver_multiprocess.py:649] Admin console is available at: http://localhost:8080/_ah/admin 

sugiriendo que el almacén de datos ... no se ha instalado correctamente?

+0

posible duplicado de [Almacén de datos local no persistido entre reinicios de la aplicación] (http://stackoverflow.com/questions/7430888/local-datastore-not-persisted-between-application-restarts) –

+0

@AdamCrossland No creo es un dup, en esta pregunta todo se borra mientras que en la pregunta anterior se borra parte de los datos. –

+0

Eche un vistazo a los registros (en el panel de la consola) cuando almuerce la aplicación, ¿ve alguna advertencia allí? –

Respuesta

7

A partir de 1.6.4, dejamos de guardar el almacén de datos después de cada escritura. Este método no funcionaba al simular el modelo transaccional encontrado en el Datastore de alta replicación (perdería las últimas escrituras). También es terriblemente ineficiente. Lo cambiamos para que el apéndice de desarrollo del almacén de datos vacíe todas las escrituras y guarde su estado al apagarse. Parece que dev_appserver no se está cerrando correctamente. Debería ver:

La aplicación de todas las transacciones pendientes y guardar el almacén de datos

en los registros cuando se apaga el servidor (ver source code y source code). Si no lo hace, significa que el dev_appserver no se está cerrando limpiamente (con una señal TERM o KeyInterrupt).

+0

¿Qué es? la forma correcta de cerrar dev_appserver? En Ubuntu uso la interrupción Ctrl + C y funciona. En Windows, el símbolo del sistema también funciona. Pero en Windows, con git bash, no persiste. –

Cuestiones relacionadas