2011-05-04 12 views

Respuesta

7

Algunas opciones para ejecutar una aplicación de App Engine sin App Engine:

  • TyphoonAE, que se ejecuta Python aplicaciones usando una pila de componentes de código abierto populares
  • appscale, que se ejecuta Python o aplicaciones Java fuera de Nube de Amazon EC2

No he intentado tampoco. Vea this question para una discusión adicional de ambos.

¿Qué tan bien funcionará el almacén de datos si simplemente gira dev_appserver.py en una IP pública? Si tiene muchos datos, mal. Cuando se utiliza el servidor de desarrollo, todo el almacén de datos se guarda en la memoria, por lo que al insertar datos, el uso de memoria de Python aumentará. Una vez que haya agregado suficientes datos para hacer que su sistema comience a intercambiar, su aplicación se volverá inusualmente lenta. Hay una opción en el servidor de desarrollo para usar un código auxiliar de SQLite en lugar del stub en memoria. Esto hace que el rendimiento sea tolerable con grandes cantidades de datos, pero no es tan eficiente como el almacén de datos de producción, por lo que el acceso al almacén de datos es relativamente lento incluso con pequeñas cantidades de datos. Ciertamente, mucho más lento que el almacén de datos en memoria con pequeñas cantidades de datos.

Ejecutar el servidor de desarrollo como servidor de producción autónomo es generalmente una mala idea. Los stubs API provistos con el servidor de desarrollo están diseñados para que los usen los desarrolladores, no los usuarios. P.ej. enviar correo solo escribe una entrada de registro en lugar de enviar correo; iniciar sesión como administrador implica hacer clic en una casilla que dice "iniciar sesión como administrador".

Si desea mover una aplicación existente de App Engine, use una de las opciones anteriores. Si está desarrollando una aplicación desde cero, use Django u otro marco que esté diseñado para ejecutarse en hardware genérico. El servidor de desarrollo está pensado para eso: desarrollo.

+1

La otra razón para no funcionar con el servidor de desarrollo es que se trata de un único subproceso. –

+0

@Adam técnicamente también el servidor de producción tiene un solo hilo – systempuntoout

+2

Es una especie de pelos partidos. Creo que quiso decir que el servidor de desarrollo solo puede atender una solicitud a la vez. –

5

, con muchas características faltantes (colas paralelas, tareas cron, correo, XMPP, ...), algunos problemas de seguridad ocultos, bajo rendimiento y estabilidad, es técnicamente posible.

Como probablemente adivinó, es una mala idea.

Tomemos como ejemplo el servidor HTTP; utilizando el servidor de desarrollo pondría en Producción un documento BaseHTTPServer sin documentar, bastante imposible de configurar y probablemente con algunos fallos de seguridad ocultos listos para ser explotados.

Como bien dijo @Drew, existen mejores opciones para ejecutar el código de Google App Engine en un entorno preparado para producción que no sea GAE.