2010-03-02 27 views
12

Comencé a usar Jinja2 como motor de plantillas en Google App Engine (en Python).Jinja2 en Google App Engine

Mi pregunta es esta: ¿Bytecode el trabajo de caché en producción? Está funcionando muy bien en el servidor de desarrollo, pero leí en alguna parte que el almacenamiento en caché de bytes depende del módulo marshal, que no es compatible con App Engine. This answer a una pregunta diferente proporciona una posible solución cambiando marshal para usar los métodos pickle. ¿Alguien ha probado esto?

En general, ¿hay algo más que deba tener en cuenta al usar Jinja2 con App Engine?

Cualquier ayuda sería muy apreciada!

Gracias.

+0

Resulta que 'pickle' no se puede usar para objetos de código (es por eso que Jinja2 usa' mariscal' para persistir su plantilla compilada bytecode). 'mariscal' está disponible en el entorno de desarrollo local, pero es un módulo vacío en el entorno GAE implementado (ver http://code.google.com/appengine/docs/python/runtime.html#Pure_Python). – Cameron

Respuesta

12

Rodrigo Moraes creó algunos cargadores especiales para Jinja2 bajo GAE, vea here. No es el almacenamiento en caché de código byte, pero precompila todas las plantillas en Python para evitar el análisis general de Jinja2.

Tenga en cuenta que (de this GAE page):

código de aplicación compilado se almacena en caché para respuestas rápidas a Internet solicita

+0

Por ahora, voy a ir con plantillas sin memoria caché. Voy a echar un vistazo más de cerca cuando tenga más tiempo para profundizar en el código. ¡Gracias por la respuesta! – Cameron

1

De acuerdo con la What's New in Python 2.7 docs, con Python 2.7 también puede subir archivos .pyc.

Puede cargar archivos .pyc, pero no en combinación con archivos .py. Sin embargo, puede cargar archivos .zip que contengan archivos .py o .pyc (o una combinación).