Google App Engine para Python

Posted by in Python

Hace unos meses ya os conté mi experiencia en Google Code Lab realizado en Córdoba, donde tuve la oprtunidad de comprobar que … tenía que conocer Goolge App Engine. En las entradas anteriores hemos comentado la teoría sobre GAE, pero ahora sí que vamos a trabajar utilizando webapp2, veremos cómo trabajar con las plantillas jinja2, y ponerlo bonito con Twitter Bootstrap, y mucho más!

Empezamos ….

Probando Google App Engine for Python

Para probar GAE con Python, lo primero es descargarse e instalar Google App Engine SDK for Python, que puedes encontrar aquí: https://developers.google.com/appengine/downloads?hl=es. Yo he seleccionado Python, pero también está disponible para otros lenguajes como PHP, Go y Java, así que … opciones tienes varias!

En la instalación verifica que la máquina tenga instalado Python 2.7 como pre-requisito:

Prerequisitos GAE

Prerequisitos GAE

Lo siguiente es aceptar los términos, seleccionar el directorio donde quieres instalar la aplicación, siguiente, siguiente …. y en un minuto ya lo tienes instalado.

Instalando GAE

Instalando GAE

 

Probando Google App Engine con Python

Antes de lanzarnos a probar GAE, nada mejor que saber qué librerias están incluidas, y que puedes verlas aquí: https://developers.google.com/appengine/docs/python/tools/libraries27. Cómo puedes comprobar, incluye una selección bastante interesante, porque incluye NumPy, MatPlotLib, MySQLdb, pyCripto, yaml, lxml, django, … En fin, que tenemos más que suficiente para divertirnos!!

Una vez lanzado, tenemos lo siguiente:

GAE

GAE

Hacemos una prueba, y creamos una aplicación desde File / Add New Application, y completamos los datos como el nombre de la aplicación y la ruta donde se almacena, así como el motor de Python y los puertos para acceder:

Nueva aplicación

Nueva aplicación

Y ya lo tenemos, preparado para correr:

Aplicación Hola

Aplicación Hola

Le damos a Run, y vamos al navegador, al puerto que hemos seleccionado:

Aplicación Hola corriendo

Aplicación Hola corriendo

Y ya tenemos nuestra aplicación corriendo.

Diseccionando la aplicación

No hemos hecho absolutamente nada, y … el solo ha escrito el «hola mundo«, así que … vamos a la ruta y comprobamos que la aplicación es un directorio y dentro del mismo, hay una serie de ficheros:

Ficheros de la aplicación

Ficheros de la aplicación

Básicamente, tenemos el favicon, seguido de dos ficheros yaml y de nuestro fichero fuente en python (y su compilado .pyc).


import webapp2

class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.write('Hello world!')

app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)

Cómo puedes comprobar, utiliza el framework webapp2 de Python.

NOTA: No he subido el código del proyecto porque … no creo que sea necesario! De todas formas, puedes ver la aplicación aquí.

Aprendiendo webApp2

Aparentemente, todo ha sido fácil hasta ahora, así que … vamos con un pequeño ejemplo. El código anterior lo modificamos, y le añadimos una variable html donde mostraremos un pequeño formulario, y un botón de enviar. Al utilizar el método post, se ejecutará MainHandler.post donde mostrará un mensaje.

import webapp2

root = '/'
html = """
<html lang="es">
    <head><title>Probando Google App Engine for Python</title></head>
    <body>
        <h1>Probando Google App Engine for Python</h1>
        <p>Cargado %d veces</p>
        <form method="post">
            <label for="nombre">Nombre</label>
            <input name="nombre" id="nombre" type="text" value="" />
            <input type="submit" value="Enviar">
        </form>
    </body>
</html>
"""

class MainHandler(webapp2.RequestHandler):

    def post(self):
        nombre = self.request.get("nombre")
        if len(nombre) == 0:
            self.redirect(root)
        mensaje = ('Hola ... %s' % (nombre))
        self.response.out.write(mensaje)

    def get(self):
        self.response.write(html)

app = webapp2.WSGIApplication([(root, MainHandler)], debug=True)

Y lo vemos funcionando:

Probando webApp2 en GAE

Probando webApp2 en GAE

Introducimos un nombre, y vemos el resultado:

Probando webApp2 en GAE

Probando webApp2 en GAE

Y hasta aquí la entrada de hoy, con este pequeño ejemplo donde se muestra cómo trabajar con el framework webapp2.

Buen día!