2010-01-01 25 views
27

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.Django y App Engine

Característica principal de asesino de Django, en mi humilde opinión, es el middleware y aplicaciones reutilizables. 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 de django que todavía se pueden ejecutar en Google App Engine (que no sean las desactivadas: las populares aplicaciones django, middleware de sesión y autenticación, usuarios y administradores, modelos, etc.).

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

+3

Posible engaño: http://stackoverflow.com/questions/1011599/django-on-google-app-engine. – jbochi

Respuesta

11

app-engine-patch actualmente tiene la mayor parte de django funcional, 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 un fork of 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 versiones de django hasta 1.1, hasta issue #3230 Django 1.2 se agrega 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 muy lejos de ser incluido en una versión django. Este django developers thread tiene mucha información acerca de estos esfuerzos.

Por separado, hay un proyecto google summer of code que trabaja en la integración de algunos aspectos de los archivos no redondos.

+0

Gracias. Es muy bueno ver el apoyo de django para que Gae vaya en una mejor dirección y que este objetivo no haya sido abandonado. – notnoop

+3

app-engine-patch parece estar abandonado – Casebash

3

app-engine-patch obtiene la mayor parte de esas cosas que trabajan dentro AppEngine - por lo que puede (en su mayoría) utiliza rectas Modelforms, utilice los usuarios y administración de Django, etc.

Yo sólo he utilizado para proyectos bastante simples (siendo bastante nuevo para django), pero afirman que la mayoría de las aplicaciones de 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.

añadido: 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 some articles para ejecutar aplicaciones Django en appengine; el más reciente es en realidad un post invitado de los autores de app-engine-patch.

+1

app-engine-patch parece haber sido abandonado durante los últimos cuatro meses, y ambos proyectos no ayudan con las aplicaciones reutilizables (Ponix, etc.). Los artículos de Google parecen un poco viejos (solo un artículo de mayo de 2009, y todo lo demás es de 2008). – notnoop

1

He tenido el mejor éxito simplemente seleccionando y eligiendo las características de Django que necesito y parchándolos 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.

1

Quizás esté interesado en probar web2py, otro framework de Python que supuestamente tiene menos fricción entre GAE y un servidor web "normal".

0

La versión de Django provista con App Engine has been updated to 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 tiempo con parches de mono en la misma medida.

0

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

Para utilizar Django en Python 2.7, especifique la aplicación WSGI y la biblioteca de 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" 
+0

"Sin embargo, las aplicaciones de Django de terceros que usan la interfaz de modelado de datos Django-en particular la aplicación de administración de Django-pueden no funcionar directamente con App Engine" - desde la página. – notnoop

+0

@notnoop De hecho. Sin embargo, a través de [Google Cloud SQL] (https://developers.google.com/cloud-sql/), esto puede cambiar pronto. Las características estándar dependientes del modelo de Django (incluido el administrador de Django) deben ser compatibles una vez que se haya implementado un DB con la aplicación alojada de App Engine. Más sobre esto [aquí] (https://developers.google.com/cloud-sql/docs/django). –