standard run locally google engine deploy app django google-app-engine

run - Django y App Engine



run django app locally (7)

Quería verificar el estado de la ejecución de Django en Google App Engine actualmente y cuáles son los beneficios de ejecutar django en GAE sobre simplemente usar Webapp.

La función principal de asesino de Django, en mi humilde opinión, son las aplicaciones reutilizables y el middleware. Desafortunadamente, la mayoría de las aplicaciones actuales de Django usan modelos o formularios modelo (django-tags, django-reviews, django-profiles, aplicaciones Pinax).

Entonces, ¿cuáles son las características o beneficios restantes que django tiene que todavía se pueden ejecutar en Google App Engine (que no sea lo que está deshabilitado: las populares aplicaciones django, middleware de autenticación y sesión, usuarios y administradores, modelos, etc.).

Además, ¿hay una lista de las aplicaciones de Django que también funcionan en App Engine?



El tiempo de ejecución de Python 2.7 de GoogleAppEngine (GAE) proporciona varias bibliotecas de terceros que su aplicación puede usar, además de la biblioteca estándar de Python, las herramientas de GAE y el entorno de tiempo de ejecución de GAE Python. Uno de ellos es Django. Lo que sigue se copia de la página GAE docs en bibliotecas de terceros :

Para usar Django en Python 2.7, especifique la aplicación WSGI y la biblioteca Django en app.yaml:

... handlers: - url: /.* script: main.app # a WSGI application in the main module''s global scope libraries: - name: django version: "1.2"


Quizás le interese consultar web2py, otro framework de Python que supuestamente tiene menos fricción entre GAE y un servidor web "normal".


Tuve el mejor éxito simplemente escogiendo y eligiendo las características de Django que necesito y parchándolas en la aplicación web yo mismo. En mi último proyecto, de hecho recorté completamente las aplicaciones de webapp. Todavía importo y llamo a varias funciones de utilidad de aplicaciones web, pero en su mayoría es una aplicación manual desarrollada a partir de las partes buenas de GAE y Django.


app-engine-patch hace que la mayoría de esas cosas funcionen dentro de AppEngine, por lo que puedes (en su mayoría) usar Modelforms rectas, usar los usuarios y administradores de Django, etc.

Solo lo he usado para proyectos bastante simples (siendo bastante nuevo para django), pero afirman que la mayoría de las aplicaciones Django funcionarán con (como máximo) modificaciones menores en appengine. Por ejemplo, app-engine-patch usa las clases de AppEngine Model en lugar de las clases de Django; y hay algunas de las vistas básicas que son demasiado ineficaces para ejecutarse en Appengine.

agregado: google-app-engine-django es similar; pero proporciona un modelo base que parece idéntico al modelo base de Django. Entiendo que Google-app-engine-django fue lanzado por Google, luego se bifurcó para crear un parche de aplicación de motor. Los desarrolladores de app-engine-patch parecen tener objetivos diferentes de los creadores de google-app-engine-django, por lo que es posible que uno de los dos satisfaga sus necesidades mejor que el otro.

Google ha proporcionado algunos artículos sobre la ejecución de aplicaciones de Django en appengine; el más reciente es en realidad un post invitado de los autores de app-engine-patch.


app-engine-patch actualmente tiene la mayor parte funcional de django, incluyendo sesiones, contrib.auth, sitios y algunas otras aplicaciones estándar de django. Sin embargo, su principal desventaja (en mi opinión) es que usa un archivo zip de una versión modificada de django para lograr esta funcionalidad y los mantenedores actuales no parecen haber seguido el ritmo de las versiones actuales de django. Actualmente parece ser el consenso de los mantenedores del pasado y el presente que este enfoque es demasiado engorroso de mantener y, por lo tanto, nadie lo mantiene actualmente.

google-app-engine-django , utiliza un enfoque de parche de mono de la última versión de django incluida en el tiempo de ejecución GAE de producción, de modo que mientras google siga rastreando los lanzamientos de django, se mantendrá actualizado con respecto a django. Sin embargo, actualmente no ha portado completamente contrib.auth, por lo que solo puede autenticarse con cuentas de Google, lo que puede ser un gran inconveniente dependiendo de si desea que los modelos de usuario contrib.auth funcionen como los conoce en back-ends sql. Tampoco hay soporte de administración de django en el asistente como hay en el app-engine-patch. Existe una bifurcación de django-app-engine-django que se agrega en algunas de las aplicaciones contrib, como páginas planas, sitios y sitemaps. También tenga en cuenta que solo funciona en las versiones de django hasta 1.1, hasta que se agregue el número 3230 de Django 1.2 a use_library, a menos que cargue django como un archivo zip.

En el horizonte, el desarrollador original de App-Engine-Patch ha estado trabajando en la rama django-nonrel , pero esto puede estar bastante lejos de ser incluido en una versión django. Este hilo de desarrollo de django contiene mucha información sobre estos esfuerzos.

Por otra parte, hay un verano de google de Google Project trabajando en la integración de algunos aspectos de los no-db''s.


La versión de Django provista con App Engine se ha actualizado a 1.2.5 con la última versión de SDK ( 1.4.2 , changelog ). Esta versión está disponible a través de la declaración use_library() , por lo que ya no tendrá que perder el parche de mono en la misma medida.