2010-03-02 29 views
12

Ich habe begonnen, Jinja2 als meine Vorlage Engine auf Google App Engine (in Python) zu verwenden.Jinja2 in Google App Engine

Meine Frage ist: Wird Bytecode Caching in der Produktion arbeiten? Es funktioniert sehr gut auf dem Entwicklungsserver, aber ich habe irgendwo gelesen, dass das Bytecode-Caching vom Modul marshal abhängt, das in App Engine nicht unterstützt wird. This answer zu einer anderen Frage bietet eine mögliche Lösung, indem marshalpickle Methoden zu verwenden. Hat jemand das versucht?

Im Allgemeinen, sollte ich noch etwas berücksichtigen, wenn ich Jinja2 mit App Engine verwende?

Jede Hilfe würde sehr geschätzt werden!

Danke.

+0

Es stellt sich heraus, dass 'pickle' nicht für Code-Objekte verwendet werden kann (deshalb verwendet Jinja2' marshal', um den kompilierten Template-Bytecode beizubehalten). 'marshal' ist in der lokalen Entwicklungsumgebung verfügbar, aber es ist ein leeres Modul in der bereitgestellten GAE-Umgebung (siehe http://code.google.com/appengine/docs/python/runtime.html#Pure_Python). – Cameron

Antwort

12

Rodrigo Moraes hat einige Speziallader für Jinja2 unter GAE entwickelt, siehe here. Es ist kein Bytecode-Caching, sondern es werden alle Vorlagen in Python vorkompiliert, so dass Sie den Jinja2-Parsing-Overhead vermeiden.

Beachten Sie, dass (von this GAE page):

kompilierte Anwendungscode für schnelle Reaktionen auf dem Web-Cache gespeichert wird ersucht

+0

Ich werde jetzt nur mit nicht zwischengespeicherten Vorlagen gehen. Ich werde genauer hinsehen, wenn ich mehr Zeit habe, mich in den Code zu vertiefen. Danke für die Antwort! – Cameron

1

Nach dem What's New in Python 2.7 docs, mit Python 2.7 Sie auch Dateien hochladen .pyc können.

Kann .pyc-Dateien hochladen, aber nicht in Kombination mit .py-Dateien. Sie können jedoch ZIP-Dateien hochladen, die .py oder .pyc Dateien (oder eine Kombination) enthalten.