martes, 25 de agosto de 2015
Programación Google App Engine con Python
Google App Engine o también conocido más comúnmente como GAE o App Engine nos abre la infraestructura de producción de Google de forma gratuita como plataforma de desarrollo y hospedaje de aplicaciones web.
El servicio fue lanzado el 7 de abril del 2008 como un servicio de cloud pero a diferencia de otros servicios en la nube como Amazon Web Services o Azure Services Platform de Microsoft, el servicio ofrecido por Google es un servicio de Plataforma como Servicio y no de Infraestructura como Servicio.
Características
GAE soporta de manera oficial los lenguajes de programación Python y Java de manera estable y en modo de beta testing en lenguaje de programación Go creado por ellos mismos. Al soportar Java, es posible además utilizar cualquier lenguaje JVM o lo que es lo mismo, cualquier lenguaje que pueda ejecutarse sobre una máquina virtual de Java, aunque eso si, con serias limitaciones. Entre dichos lenguajes se encuentran:
· Groovy
· JRuby
· Scala
· PHP
· Clojure
· Perl
GAE soporta varios frameworks bajo Python como CherryPy, Pylons, Flask y Django 0.96 y 1.2. Además la misma Google ha desarrrollado un framework propio llamado —viva la originalidad que les caracteriza— webapp para aplicaciones web que van mejorando y actualizando. También existe un framework desarrollado específicamente para GAE y siguiendo —supuestamente— la filosofía de Django llamado GAE framework.
Restricciones
· Las aplicaciones solo tienen permisos de lectura a los archivos del sistema de archivos. Para almacenar datos y archivos en modo lectura y escritura es necesario utilizar un sistema de archivos virtual sobre el DataStore.
· Solo se puede ejecutar código a través de consultas HTTP
· Las aplicaciones Java solo pueden usar el conjunto considerado seguro de clases del JREestándar. ( Comprueba el Listado de clases)
· Las aplicaciones no pueden crear nuevos hilos de ejecución
· Los usuarios de Python pueden subir módulos para su uso en la plataforma pero no aquellos que están completamente desarrollados en C o Pyrex
· El soporte para SSL solo está disponible par dominios *.appspot.com
· Un proceso iniciado en el servicio para responder a una consulta no puede durar más de treinta segundos
· No soporta sesiones persistentes, solo sesiones replicadas a las que además se les aplican ciertos límites.
· No se pueden abrir sockets, por lo tanto, no se puede usar Twisted
Introduccion con python
App Engine se ejecuta el código de aplicación Python usando un intérprete de pre-cargado de Python en un ambiente seguro "espacio aislado". Su aplicación recibe peticiones web, realiza un trabajo, y envía las respuestas mediante la interacción con este entorno.
Una aplicación web de Python interactúa con el servidor Web App Engine mediante el protocolo WSGI, por lo que las aplicaciones pueden utilizar cualquier framework de aplicaciones web compatibles con WSGI. App Engine incluye un marco de aplicación web sencilla, llamada webapp2, para hacer más fácil para empezar. Para aplicaciones más grandes, los marcos de terceros maduros, como Django, trabajar bien con App Engine.
El intérprete de Python puede ejecutar cualquier código Python, incluyendo módulos de Python que usted incluya con su solicitud, así como la biblioteca estándar de Python. El intérprete no puede cargar módulos de Python con el código C; se trata de un entorno de Python "puro".
El entorno de "sandbox" asegurado aísla su solicitud de servicio y seguridad. Asegura que las aplicaciones sólo pueden realizar acciones que no interfieren con el rendimiento y la escalabilidad de otras aplicaciones. Por ejemplo, una aplicación no puede escribir datos en el sistema de archivos local o realizar conexiones de red arbitrarias. En su lugar, las aplicaciones utilizan los servicios escalables proporcionadas por App Engine para almacenar datos y comunicarse a través de Internet. El intérprete de Python lanza una excepción cuando una aplicación intenta importar un módulo de la biblioteca estándar conocido para no trabajar dentro de las restricciones de entorno limitado.
La plataforma App Engine proporciona muchos servicios que su código puede llamar. Su aplicación también puede configurar tareas programadas que se ejecutan a intervalos especificados.
Selección del tiempo de ejecución de Python
App Engine sabe utilizar el entorno de ejecución de Python para el código de aplicación cuando se utiliza la herramienta llamadaappcfg.py desde el SDK de Python con un archivo de configuración llamado app.yaml
Se especifica el runtime los elementos de app.yaml Para utilizar Python 2.7, añada lo siguiente a app.yaml
runtime: python27
api_version: 1
threadsafe: true
...
Bibliotecas personalizadas en Python 2.7
Adición de Bibliotecas de terceros Python
El SDK y herramientas Python
El primer elemento, runtime selecciona el entorno de ejecución de Python.
El segundo elemento, api_version selecciona la versión del entorno de ejecución de Python para usar. Al escribir estas líneas, App Engine sólo tiene una versión del entorno de Python, 1 Si el equipo de App Engine nunca necesita liberar los cambios en el medio ambiente que pueden no ser compatibles con el código existente, lo harán con un nuevo identificador de versión. Su aplicación va a seguir utilizando la versión seleccionada hasta que cambie la api_version configuración y cargar su aplicación.
En el tiempo de ejecución de Python 2.7, los siguientes módulos han sido reemplazados o personalizada:
· tempfile está desactivado, a excepción de TemporaryFile que es un alias para StringIO.
· el registro está disponible y su uso es muy aconsejable! Ver registro.
Además de la biblioteca estándar de Python y las bibliotecas de App Engine, el tiempo de ejecución de Python 2.7 incluye variasbibliotecas de terceros.
Puede incluir terceros bibliotecas Python partido con su aplicación, poniendo el código en el directorio de la aplicación. Si comete un enlace simbólico al directorio de un módulo en el directorio de la aplicación, appcfg.py seguirá el enlace para insertar el módulo en su aplicación.
El módulo de Python incluye ruta incluye directorio raíz de la aplicación (el directorio que contiene el app.yaml archivo). Los módulos que se crean en el directorio raíz de la aplicación están disponibles con una ruta desde la raíz. No te olvides de crear __init__.pyarchivos en subdirectorios, así que Python reconocerá los subdirectorios como paquetes.
La App Engine Python SDK incluye herramientas para probar la aplicación, la posibilidad de subir sus archivos de la aplicación, la gestión de los índices del almacén de datos, la descarga de datos de registro, y la posibilidad de subir grandes cantidades de datos para el almacén de datos.
El servidor de desarrollo se ejecuta la aplicación en el equipo local para probar la aplicación. El servidor simula el almacén de datos de App Engine, servicios y restricciones sandbox. El servidor de desarrollo también puede generar la configuración del almacén de datos para los índices basados en las consultas de la aplicación realiza durante la prueba.
Una herramienta multipropósito llamado appcfg.py maneja toda la interacción de línea de comandos con la aplicación que se ejecuta en App Engine. appcfg.py puede subir su aplicación en App Engine, o simplemente actualizar la configuración del índice de almacén de datos para que pueda construir nuevos índices antes de actualizar el código. También puede descargar los datos del registro de la aplicación, por lo que puede analizar el rendimiento de su aplicación utilizando sus propias herramientas.
REFERENCIAS
https://cloud.google.com/appengine/docs/python/
http://www.genbetadev.com/programacion-en-la-nube/introduccion-a-google-app-engine
http://www.genbetadev.com/programacion-en-la-nube/nuestra-primera-aplicacion-con-google-app-engine-python
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario