SlideShare una empresa de Scribd logo
1 de 43
GAE - DJANGO
Manuel Aznar
manuel.aznar@neodoo.es
Septiembre de 2011
Neodoo Microsystems S.L. 2
Cloud Computing
● La computación en la nube (Cloud computing) es un paradigma que permite ofrecer servicios
de computación a través de Internet.
Autor: Oliver Widder
www.geekandpoke.com
Licencia Creative Commons
Cloud Computing (I)
● Capas de la nube:
● IaaS (infrastructure as a service):
– Infraestructura de computación y
almacenamiento.
– Orientado al desarrollador.
● PaaS (Platform as a service):
– Entorno de desarrollo y ejecución
de la aplicación.
– Orientado al desarrollador.
● SaaS (Software as a service):
– Aplicaciones en entorno web.
– Orientado al cliente final.
Neodoo Microsystems S.L. 4
Algunos proveedores PaaS
GAE: ¿Por qué?
● Comienzo fácil
● Escalabilidad automática
● Fiabilidad, rendimiento y seguridad de la
infraestructura de Google
● Alojamiento gratuito hasta cierto nivel
GAE: Comienzo fácil
• App Engine es una completa pila de desarrollo que
emplea tecnologías habituales para crear y alojar
aplicaciones web.
• En App Engine, puedes crear el código de tu aplicación,
probar la aplicación en tu equipo local y subirla a Google
únicamente haciendo clic en un botón o introduciendo una
secuencia en la línea de comandos.
GAE: Fácil creación y despliegue
GAE: Muchas librerías
GAE: Escalabilidad automática
• Por primera vez, tus aplicaciones pueden aprovechar las
mismas tecnologías escalables sobre las que están creadas las
aplicaciones de Google como, por ejemplo, BigTable y GFS.
• App Engine dispone de una función de escalabilidad
automática, así que lo único que tienes que hacer es crear el
código de tu aplicación y nosotros nos encargamos del resto.
• App Engine puede satisfacer tus necesidades
independientemente del número de usuarios de que dispongas
y de la cantidad de datos que almacene tu aplicación.
GAE: Fiabilidad, rendimiento,...
• La infraestructura de Google es famosa por su gran fiabilidad y
por su alto rendimiento.
• Con App Engine, puedes aprovechar los diez años de
experiencia que posee Google en la ejecución de sistemas
escalables de forma masiva y concebidos para el rendimiento.
• A todas las aplicaciones de App Engine les aplican las mismas
políticas de seguridad, privacidad y protección de datos que a
las demás aplicaciones de Google.
GAE: Alojamiento gratuito
• Crear una aplicación en App Engine no sólo resulta fácil.
¡Además es gratis!
• Puedes crear una cuenta y publicar una aplicación que la gente
podrá utilizar inmediatamente sin ningún coste ni obligación.
• Una aplicación de una cuenta gratuita dispone de hasta 500
MB de espacio y admite hasta cinco millones de vistas
mensuales.
• Cuando estés listo para más, puedes habilitar la facturación,
configurar un presupuesto diario máximo y asignarle el
presupuesto a cada recurso en función de tus necesidades.
GAE: Limites y cuotas (I)
GAE: Limites y cuotas (II)
GAE: Limites y cuotas (III)
GAE: Limites y cuotas (IV)
GAE-Python
● Permite provechar la gran cantidad de bibliotecas, de herramientas y de
frameworks para Python que utilizan los desarrolladores profesionales para
crear aplicaciones web internacionales.
● Las aplicaciones web Python interactúan con el servidor web App Engine
mediante el uso del protocolo CGI. Las aplicaciones pueden utilizar un
framework de aplicaciones web compatible con WSGI mediante un adaptador
de CGI.
● Para facilitar el comienzo, App Engine incluye un framework de aplicaciones
web sencillas denominado webapp.
● Para aplicaciones de mayor tamaño, los frameworks avanzados de terceros
como Django, por ejemplo, también funcionan con App Engine.
GAE-Python: Entorno ejecución
● App Engine es compatible con Python 2.5.
● Python se ejecuta en un entorno seguro de "zona de pruebas".
● Puede ejecutar cualquier código Python, incluidos los módulos Python que
contenga tu aplicación, así como la biblioteca Python estándar.
● El intérprete no puede cargar los módulos Python con el código C, puesto que
se trata de un entorno Python "puro".
● La zona de pruebas asegura que la aplicación sólo pueda realizar acciones
que no interfieran con el rendimiento ni con la escalabilidad de otras
aplicaciones.
●El intérprete de Python genera una excepción cuando una aplicación intenta
importar un módulo de la biblioteca estándar conocida para trabajar fuera de las
restricciones de la zona de pruebas.
GAE-Python: Python puro
● El entorno incluye la biblioteca estándar de Python.
● Algunos módulos se han desactivado porque sus funciones principales no son
compatibles con App Engine como :
● La interconexión o la escritura en el sistema de archivos.
● El módulo os está disponible, pero algunas funciones no compatibles se
encuentran inhabilitadas.
Si se intenta importar un módulo no compatible o utilizar una función no
compatible, se generará una excepción.
GAE-Python: Módulos
Algunos módulos de la biblioteca estándar se han sustituido o se han
personalizado para que funcionen con App Engine. Por ejemplo:
● cPickle se ha aliado con pickle. Las funciones específicas de cPickle no
son compatibles.
● marshal está vacío. La importación se realizará correctamente, pero no si
se utiliza este módulo.
● Estos módulos están igualmente vacíos: imp, ftplib, select, socket
● tempfile se encuentra inhabilitado, salvo en el caso de TemporaryFile, que
se ha aliado con StringIO.
● logging está disponible y se recomienda su uso. Consulta la información
que aparece a continuación.
GAE-Python: No se puede
● Escribir en el sistema de archivos. La lectura desde el sistema de archivos
está permitida y todos los archivos de aplicación subidos con la aplicación están
disponibles.
● Abrir un socket ni acceder a otro host directamente. Una aplicación puede
utilizar el servicio de extracción de URL de App Engine para realizar solicitudes
HTTP y HTTPS a otros hosts en los puertos 80 y 443, respectivamente.
● Generar un subproceso. El procesamiento de una solicitud web a una
aplicación debe ser un único proceso que dure unos cuantos segundos. Los
procesos que tardan mucho tiempo en responder se finalizan para evitar la
sobrecarga del servidor web.
● Realizar otro tipo de llamadas al sistema.
GAE-Python: Tiempo de solicitud
● Se dispone de una cantidad de tiempo limitada para generar y devolver una
respuesta a una solicitud, en general, 30 segundos aproximadamente. Una vez
alcanzado el plazo, el controlador de solicitudes se interrumpe.
● El entorno de tiempo de ejecución Python interrumpe el controlador de
solicitudes mediante la generación de la excepción DeadlineExceededError
del paquete google.appengine.runtime. Si el controlador de solicitud no detecta
esta ni otras excepciones, el entorno de tiempo de ejecución devuelve al cliente
un error de servidor HTTP 500.
● El controlador de solicitud puede detectar este error para personalizar la
respuesta.
GAE-Python: Servicios ofrecidos
● Almacén de datos. Incluye herramientas de modelado de datos muy
completas para gestionar los esquemas de datos. El API admite dos interfaces
para realizar consultas al almacén de datos, incluido GQL, un lenguaje de
consultas similar a SQL que también se utiliza en la consola de administración.
● Memcache. Proporciona un almacenamiento en caché distribuido compatible
con el API Memcache Python.
● Extracción de URL. Para acceder a recursos en la web usando los protocolos
HTTP y HTTPS. Se pueden utilizar los módulos urllib, urllib2 o httplib de la
biblioteca estándar Python o bien el API de servicio de extracción de URL de
App Engine.
● Envio de emails, tratamiento de imagenes, usar cuentas de google, tareas
programadas, ...
GAE-Python: Solicitudes y CGI
● Cuando App Engine recibe una solicitud web para tu aplicación, App Engine
ejecuta la secuencia de comandos de controlador que se corresponde con la
URL, como se describe en el archivo de configuración app.yaml de la
aplicación.
●App Engine utiliza el estándar CGI para comunicar los datos de solicitud al
controlador y recibir la respuesta.
● App Engine utiliza varios servidores web para ejecutar tu aplicación y
ajustará automáticamente el número de servidores en uso para procesar las
solicitudes de una forma segura.
● Una determinada solicitud se puede enviar a cualquier servidor, que no tiene
que ser el mismo servidor que procesó una solicitud anterior procedente del
mismo usuario.
GAE-Python: Ejemplo app.yaml
application: myapp
version: 1
runtime: python
api_version: 1
handlers:
- url: /
script: home.py
- url: /index.html
script: home.py
- url: /stylesheets
static_dir: stylesheets
- url: /(.*.(gif|png|jpg))
static_files: static/1
upload: static/(.*.(gif|png|jpg))
- url: /admin/.*
script: admin.py
login: admin
- url: /.*
script: not_found.py
GAE-Python: Herramientas
Incluye herramientas para probar tu aplicación, subir los archivos de tu
aplicación, gestionar los índices del almacén de datos, descargar los datos del
registro y subir grandes cantidades de datos al almacén de datos:
● Servidor de desarrollo: Simula el almacén de datos, los servicios y las
restricciones.
● appcfg.py: Herramienta multiuso para subir aplicación, actualización de
indice de datos, descargar logs, ...
● Subida de datos: Puede añadir datos al almacén de datos de tu aplicación
desde tus archivos de datos locales. Esta herramienta puede extraer los
datos de los archivos CSV, un formato de hoja de cálculo compatible con la
mayoría de software de hojas de cálculo como, por ejemplo, Google Docs o
Microsoft Excel.
GAE-Python: Bibliotecas externas
● Django 0.96.1
● WebOb 0.9
● PyYAML 3.05
● Puedes incluir otras bibliotecas Python puras en
tu aplicación.
GAE-Python: WEBAPP
● Google App Engine admite cualquier framework creado en su totalidad con
Python que utilice el estándar CGI.
● Y cualquier framework compatible con WSGI que utilice un adaptador de CGI.
● Incluidos Django, CherryPy, Pylons y web.py.
● App Engine incluye un sencillo framework para aplicaciones web denominado
webapp.
●El framework webapp está instalado en el entorno de App Engine y en el kit de
desarrollo de software (SDK), por lo que no tendrás que asociarlo al código de
tu aplicación para utilizarlo.
GAE-Webapp: Partes
● Una o varias clases RequestHandler que procesan solicitudes y generan
respuestas,
● Una instancia de WSGIApplication que dirige las solicitudes entrantes a los
controladores en función de su URL.
● Una rutina principal que ejecuta WSGIApplication con un adaptador de CGI.
GAE-Webapp: Hola Mundo
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World!')
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
GAE-Webapp: Funciones
● El módulo webapp está incluido en el paquete google.appengine.ext. Este
módulo se facilita con el SDK y también se encuentra en el entorno de tiempo
de ejecución de producción.
● Cuando webapp recibe una solicitud GET HTTP para una URL , crea una
instancia de la clase y ejecuta el método get de esa instancia.
● Se puede obtener información sobre la solicitud y respuesta dentro del método
con self.request y self.response.
● La propia aplicación se representa mediante una instancia de
webapp.WSGIApplication.
● La función run_wsgi_app() utiliza una instancia WSGIApplication (u otro
objeto de aplicación compatible con WSGI) y la ejecuta en el entorno CGI de
App Engine.
GAE-Webapp: Cuentas google
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
if user:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, ' + user.nickname())
else:
self.redirect(users.create_login_url(self.request.uri))
application = webapp.WSGIApplication([('/', MainPage)], debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
GAE-Django: Introducción
● Google App Engine incluye Django 0.96.
● Si estás utilizando la última versión estable, no tendrás que instalar nada.
● Sólo tendrás que importar tus módulos de Django como harías normalmente.
● También se cubren las modificaciones que se deben incluir si se utiliza la
versión de desarrollo de Django.
GAE-Django: Controlador WSGI I
● Para que tu aplicación Django se inicie con el controlador WSGI, sólo tienes
que realizar unos sencillos pasos.
● Debes importar util desde google.appengine.ext.webapp y el módulo del
controlador desde Django.
● Por otra parte, en lugar de gestionar las excepciones con manage.py, es
posible registrar todas las excepciones con Google App Engine y visualizar los
registros en la consola de administración.
GAE-Django: Controlador WSGI II
import logging, os
# Google App Engine imports.
from google.appengine.ext.webapp import util
# Force Django to reload its settings.
from django.conf import settings
settings._target = None
# Must set this env var before importing any part of Django
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import logging
import django.core.handlers.wsgi
import django.core.signals
import django.db
import django.dispatch.dispatcher
GAE-Django: Controlador WSGI III
def log_exception(*args, **kwds):
logging.exception('Exception in request:')
# Log errors.
django.dispatch.dispatcher.connect(
log_exception, django.core.signals.got_request_exception)
# Unregister the rollback event handler.
django.dispatch.dispatcher.disconnect(
django.db._rollback_on_exception,
django.core.signals.got_request_exception)
def main():
# Create a Django application for WSGI.
application = django.core.handlers.wsgi.WSGIHandler()
# Run the WSGI CGI handler with that application.
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
GAE-Django: Controlador WSGI IV
● app.yaml
application: my_application
version: 1
runtime: python
api_version: 1
handlers:
- url: /static
static_dir: static
- url: /.*
script: main.py
GAE-Django: Versión de desarrollo I
● Para utilizar la versión de desarrollo, debes descargar todo el proyecto de
Django e incluirlo en el directorio de nivel superior de tu aplicación.
● Para reducir el número de archivos implementados en Google App Engine,
puedes eliminar los siguientes directorios de tu carpeta de Django:
● django/bin
● django/contrib/admin
● django/contrib/auth
● django/contrib/databrowse
● django/test
● Se tiene que modificar "main.py" para eliminar la versión estándar de Django y
cargar la copia que hayas incluido con tu aplicación.
GAE-Django:Versión de desarrollo II
import logging, os, sys
# Google App Engine imports.
from google.appengine.ext.webapp import util
# Remove the standard version of Django.
for k in [k for k in sys.modules if k.startswith('django')]:
del sys.modules[k]
# Force sys.path to have our own directory first, in case we want to import
# from it.
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
# Must set this env var *before* importing any part of Django
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
GAE-Django:Versión desarrollo III
import django.core.handlers.wsgi
import django.core.signals
import django.db
import django.dispatch.dispatcher
def main():
# Create a Django application for WSGI.
application = django.core.handlers.wsgi.WSGIHandler()
# Run the WSGI CGI handler with that application.
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
GAE-Django: Configuración I
● App Engine no admite los modelos de Django.
● Se tienen que dejar vacías todas las cadenas "DATABASE_*".
● Las aplicaciones y el middleware de administración y autenticación se deberán
inhabilitar, ya que requieren el uso de modelos de Django.
● Las funciones que proporcionan se encuentran cubiertas por la consola de
administración y el API de usuarios de App Engine, respectivamente.
● Las sesiones también dependen de modelos de Django, por lo que también
tienes que inhabilitarlas.
●Por último, deberás sustituir las referencias a "project.ap" con "app" y
establecer de forma dinámica la ruta de tu directorio de plantillas.
GAE-Django: Configuración II
import os
ROOT_URLCONF = 'urls' # Replace 'project.urls' with just 'urls'
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
# 'django.contrib.sessions.middleware.SessionMiddleware',
# 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
)
INSTALLED_APPS = (
# 'django.contrib.auth',
'django.contrib.contenttypes',
# 'django.contrib.sessions',
'django.contrib.sites',
)
ROOT_PATH = os.path.dirname(__file__)
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or
# "C:/www/django/templates". Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
ROOT_PATH + '/templates',
)
GAE-Django: Entorno desarrollo
●El kit de desarrollo de software (SDK) de Google App Engine incluye el servidor
web de desarrollo dev_appserver.py.
● Te permite implementar tu aplicación en el entorno de desarrollo de Google
App Engine.
● Además, no tendrás que utilizar manage.py para sincronizar tu base de datos
al utilizar el almacén de datos de Google App Engine.
Referencias
● Python en GAE
http://code.google.com/intl/es/appengine/docs/python/gettingstarted/introduction.htm
● Django en GAE
http://code.google.com/intl/es-ES/appengine/articles/django.html
● Almacenamiento de datos para Django en GAE
http://code.google.com/intl/es-ES/appengine/articles/django-nonrel.html

Más contenido relacionado

La actualidad más candente

Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con mavenJuan Vladimir
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Instalación y configuración de servidor ftp
Instalación  y configuración de servidor ftpInstalación  y configuración de servidor ftp
Instalación y configuración de servidor ftpjfracs
 
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windowslección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + WindowsJairo Hoyos
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
PHP Tema 1 - Introducción
PHP Tema 1 - IntroducciónPHP Tema 1 - Introducción
PHP Tema 1 - IntroducciónSpacetoshare
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverDavid Gómez García
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 
Laboratorio de netbeans sql server15-04-2013
Laboratorio de netbeans  sql server15-04-2013Laboratorio de netbeans  sql server15-04-2013
Laboratorio de netbeans sql server15-04-2013saul1905
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHPAlicantePHP
 
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableCursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableAlex Rayón Jerez
 
MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021Ieva Navickaite
 

La actualidad más candente (20)

(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con maven
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Instalación y configuración de servidor ftp
Instalación  y configuración de servidor ftpInstalación  y configuración de servidor ftp
Instalación y configuración de servidor ftp
 
Turbogears_Instalación
Turbogears_InstalaciónTurbogears_Instalación
Turbogears_Instalación
 
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windowslección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
Maven
MavenMaven
Maven
 
PHP Tema 1 - Introducción
PHP Tema 1 - IntroducciónPHP Tema 1 - Introducción
PHP Tema 1 - Introducción
 
Creando APIs REST con Spring Boot
Creando APIs REST con Spring BootCreando APIs REST con Spring Boot
Creando APIs REST con Spring Boot
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
Jenkins ci + selenium
Jenkins ci + seleniumJenkins ci + selenium
Jenkins ci + selenium
 
Laboratorio de netbeans sql server15-04-2013
Laboratorio de netbeans  sql server15-04-2013Laboratorio de netbeans  sql server15-04-2013
Laboratorio de netbeans sql server15-04-2013
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableCursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
 
MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 

Destacado

Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAEMaito Kuwahara
 
Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)Databricks
 
Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos Miguel Zuniga
 
Spark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi KeynoteSpark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi KeynoteDatabricks
 
Data Science in the Cloud with Spark, Zeppelin, and Cloudbreak
Data Science in the Cloud with Spark, Zeppelin, and CloudbreakData Science in the Cloud with Spark, Zeppelin, and Cloudbreak
Data Science in the Cloud with Spark, Zeppelin, and CloudbreakDataWorks Summit
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Enginerajdeep
 
Google app engine
Google app engineGoogle app engine
Google app engineSuraj Mehta
 

Destacado (10)

Desarrollo con JSF
Desarrollo con JSFDesarrollo con JSF
Desarrollo con JSF
 
Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAE
 
Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)
 
PuttingItAllTogether
PuttingItAllTogetherPuttingItAllTogether
PuttingItAllTogether
 
Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos
 
Spark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi KeynoteSpark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi Keynote
 
Data Science in the Cloud with Spark, Zeppelin, and Cloudbreak
Data Science in the Cloud with Spark, Zeppelin, and CloudbreakData Science in the Cloud with Spark, Zeppelin, and Cloudbreak
Data Science in the Cloud with Spark, Zeppelin, and Cloudbreak
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
 
Google app engine
Google app engineGoogle app engine
Google app engine
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
 

Similar a Python Gae django

herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y PythonCarlos Toxtli
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones WebDeisy Sapaico
 
Mi primera App con GAE
Mi primera App con GAEMi primera App con GAE
Mi primera App con GAEGDG Lima
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite ServerLuis Lesende
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
Programación web con PHP con Tecnología Bootstrap.
Programación web con PHP con Tecnología Bootstrap.Programación web con PHP con Tecnología Bootstrap.
Programación web con PHP con Tecnología Bootstrap.Jose Fernandez
 
Mi primera app con GAE y GWT
Mi primera app con GAE y GWTMi primera app con GAE y GWT
Mi primera app con GAE y GWTGDG Lima
 

Similar a Python Gae django (20)

herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y Python
 
Curso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App EngineCurso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App Engine
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
 
Mi primera App con GAE
Mi primera App con GAEMi primera App con GAE
Mi primera App con GAE
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
 
Google App Engine1
Google App Engine1Google App Engine1
Google App Engine1
 
Integrando AngularJS y drupal
Integrando AngularJS y drupalIntegrando AngularJS y drupal
Integrando AngularJS y drupal
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Gae android
Gae androidGae android
Gae android
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Programación web con PHP con Tecnología Bootstrap.
Programación web con PHP con Tecnología Bootstrap.Programación web con PHP con Tecnología Bootstrap.
Programación web con PHP con Tecnología Bootstrap.
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
Mi primera app con GAE y GWT
Mi primera app con GAE y GWTMi primera app con GAE y GWT
Mi primera app con GAE y GWT
 
Welcome to Django
Welcome to DjangoWelcome to Django
Welcome to Django
 

Python Gae django

  • 1. GAE - DJANGO Manuel Aznar manuel.aznar@neodoo.es Septiembre de 2011
  • 2. Neodoo Microsystems S.L. 2 Cloud Computing ● La computación en la nube (Cloud computing) es un paradigma que permite ofrecer servicios de computación a través de Internet. Autor: Oliver Widder www.geekandpoke.com Licencia Creative Commons
  • 3. Cloud Computing (I) ● Capas de la nube: ● IaaS (infrastructure as a service): – Infraestructura de computación y almacenamiento. – Orientado al desarrollador. ● PaaS (Platform as a service): – Entorno de desarrollo y ejecución de la aplicación. – Orientado al desarrollador. ● SaaS (Software as a service): – Aplicaciones en entorno web. – Orientado al cliente final.
  • 4. Neodoo Microsystems S.L. 4 Algunos proveedores PaaS
  • 5. GAE: ¿Por qué? ● Comienzo fácil ● Escalabilidad automática ● Fiabilidad, rendimiento y seguridad de la infraestructura de Google ● Alojamiento gratuito hasta cierto nivel
  • 6. GAE: Comienzo fácil • App Engine es una completa pila de desarrollo que emplea tecnologías habituales para crear y alojar aplicaciones web. • En App Engine, puedes crear el código de tu aplicación, probar la aplicación en tu equipo local y subirla a Google únicamente haciendo clic en un botón o introduciendo una secuencia en la línea de comandos.
  • 7. GAE: Fácil creación y despliegue
  • 9. GAE: Escalabilidad automática • Por primera vez, tus aplicaciones pueden aprovechar las mismas tecnologías escalables sobre las que están creadas las aplicaciones de Google como, por ejemplo, BigTable y GFS. • App Engine dispone de una función de escalabilidad automática, así que lo único que tienes que hacer es crear el código de tu aplicación y nosotros nos encargamos del resto. • App Engine puede satisfacer tus necesidades independientemente del número de usuarios de que dispongas y de la cantidad de datos que almacene tu aplicación.
  • 10. GAE: Fiabilidad, rendimiento,... • La infraestructura de Google es famosa por su gran fiabilidad y por su alto rendimiento. • Con App Engine, puedes aprovechar los diez años de experiencia que posee Google en la ejecución de sistemas escalables de forma masiva y concebidos para el rendimiento. • A todas las aplicaciones de App Engine les aplican las mismas políticas de seguridad, privacidad y protección de datos que a las demás aplicaciones de Google.
  • 11. GAE: Alojamiento gratuito • Crear una aplicación en App Engine no sólo resulta fácil. ¡Además es gratis! • Puedes crear una cuenta y publicar una aplicación que la gente podrá utilizar inmediatamente sin ningún coste ni obligación. • Una aplicación de una cuenta gratuita dispone de hasta 500 MB de espacio y admite hasta cinco millones de vistas mensuales. • Cuando estés listo para más, puedes habilitar la facturación, configurar un presupuesto diario máximo y asignarle el presupuesto a cada recurso en función de tus necesidades.
  • 12. GAE: Limites y cuotas (I)
  • 13. GAE: Limites y cuotas (II)
  • 14. GAE: Limites y cuotas (III)
  • 15. GAE: Limites y cuotas (IV)
  • 16. GAE-Python ● Permite provechar la gran cantidad de bibliotecas, de herramientas y de frameworks para Python que utilizan los desarrolladores profesionales para crear aplicaciones web internacionales. ● Las aplicaciones web Python interactúan con el servidor web App Engine mediante el uso del protocolo CGI. Las aplicaciones pueden utilizar un framework de aplicaciones web compatible con WSGI mediante un adaptador de CGI. ● Para facilitar el comienzo, App Engine incluye un framework de aplicaciones web sencillas denominado webapp. ● Para aplicaciones de mayor tamaño, los frameworks avanzados de terceros como Django, por ejemplo, también funcionan con App Engine.
  • 17. GAE-Python: Entorno ejecución ● App Engine es compatible con Python 2.5. ● Python se ejecuta en un entorno seguro de "zona de pruebas". ● Puede ejecutar cualquier código Python, incluidos los módulos Python que contenga tu aplicación, así como la biblioteca Python estándar. ● El intérprete no puede cargar los módulos Python con el código C, puesto que se trata de un entorno Python "puro". ● La zona de pruebas asegura que la aplicación sólo pueda realizar acciones que no interfieran con el rendimiento ni con la escalabilidad de otras aplicaciones. ●El intérprete de Python genera una excepción cuando una aplicación intenta importar un módulo de la biblioteca estándar conocida para trabajar fuera de las restricciones de la zona de pruebas.
  • 18. GAE-Python: Python puro ● El entorno incluye la biblioteca estándar de Python. ● Algunos módulos se han desactivado porque sus funciones principales no son compatibles con App Engine como : ● La interconexión o la escritura en el sistema de archivos. ● El módulo os está disponible, pero algunas funciones no compatibles se encuentran inhabilitadas. Si se intenta importar un módulo no compatible o utilizar una función no compatible, se generará una excepción.
  • 19. GAE-Python: Módulos Algunos módulos de la biblioteca estándar se han sustituido o se han personalizado para que funcionen con App Engine. Por ejemplo: ● cPickle se ha aliado con pickle. Las funciones específicas de cPickle no son compatibles. ● marshal está vacío. La importación se realizará correctamente, pero no si se utiliza este módulo. ● Estos módulos están igualmente vacíos: imp, ftplib, select, socket ● tempfile se encuentra inhabilitado, salvo en el caso de TemporaryFile, que se ha aliado con StringIO. ● logging está disponible y se recomienda su uso. Consulta la información que aparece a continuación.
  • 20. GAE-Python: No se puede ● Escribir en el sistema de archivos. La lectura desde el sistema de archivos está permitida y todos los archivos de aplicación subidos con la aplicación están disponibles. ● Abrir un socket ni acceder a otro host directamente. Una aplicación puede utilizar el servicio de extracción de URL de App Engine para realizar solicitudes HTTP y HTTPS a otros hosts en los puertos 80 y 443, respectivamente. ● Generar un subproceso. El procesamiento de una solicitud web a una aplicación debe ser un único proceso que dure unos cuantos segundos. Los procesos que tardan mucho tiempo en responder se finalizan para evitar la sobrecarga del servidor web. ● Realizar otro tipo de llamadas al sistema.
  • 21. GAE-Python: Tiempo de solicitud ● Se dispone de una cantidad de tiempo limitada para generar y devolver una respuesta a una solicitud, en general, 30 segundos aproximadamente. Una vez alcanzado el plazo, el controlador de solicitudes se interrumpe. ● El entorno de tiempo de ejecución Python interrumpe el controlador de solicitudes mediante la generación de la excepción DeadlineExceededError del paquete google.appengine.runtime. Si el controlador de solicitud no detecta esta ni otras excepciones, el entorno de tiempo de ejecución devuelve al cliente un error de servidor HTTP 500. ● El controlador de solicitud puede detectar este error para personalizar la respuesta.
  • 22. GAE-Python: Servicios ofrecidos ● Almacén de datos. Incluye herramientas de modelado de datos muy completas para gestionar los esquemas de datos. El API admite dos interfaces para realizar consultas al almacén de datos, incluido GQL, un lenguaje de consultas similar a SQL que también se utiliza en la consola de administración. ● Memcache. Proporciona un almacenamiento en caché distribuido compatible con el API Memcache Python. ● Extracción de URL. Para acceder a recursos en la web usando los protocolos HTTP y HTTPS. Se pueden utilizar los módulos urllib, urllib2 o httplib de la biblioteca estándar Python o bien el API de servicio de extracción de URL de App Engine. ● Envio de emails, tratamiento de imagenes, usar cuentas de google, tareas programadas, ...
  • 23. GAE-Python: Solicitudes y CGI ● Cuando App Engine recibe una solicitud web para tu aplicación, App Engine ejecuta la secuencia de comandos de controlador que se corresponde con la URL, como se describe en el archivo de configuración app.yaml de la aplicación. ●App Engine utiliza el estándar CGI para comunicar los datos de solicitud al controlador y recibir la respuesta. ● App Engine utiliza varios servidores web para ejecutar tu aplicación y ajustará automáticamente el número de servidores en uso para procesar las solicitudes de una forma segura. ● Una determinada solicitud se puede enviar a cualquier servidor, que no tiene que ser el mismo servidor que procesó una solicitud anterior procedente del mismo usuario.
  • 24. GAE-Python: Ejemplo app.yaml application: myapp version: 1 runtime: python api_version: 1 handlers: - url: / script: home.py - url: /index.html script: home.py - url: /stylesheets static_dir: stylesheets - url: /(.*.(gif|png|jpg)) static_files: static/1 upload: static/(.*.(gif|png|jpg)) - url: /admin/.* script: admin.py login: admin - url: /.* script: not_found.py
  • 25. GAE-Python: Herramientas Incluye herramientas para probar tu aplicación, subir los archivos de tu aplicación, gestionar los índices del almacén de datos, descargar los datos del registro y subir grandes cantidades de datos al almacén de datos: ● Servidor de desarrollo: Simula el almacén de datos, los servicios y las restricciones. ● appcfg.py: Herramienta multiuso para subir aplicación, actualización de indice de datos, descargar logs, ... ● Subida de datos: Puede añadir datos al almacén de datos de tu aplicación desde tus archivos de datos locales. Esta herramienta puede extraer los datos de los archivos CSV, un formato de hoja de cálculo compatible con la mayoría de software de hojas de cálculo como, por ejemplo, Google Docs o Microsoft Excel.
  • 26. GAE-Python: Bibliotecas externas ● Django 0.96.1 ● WebOb 0.9 ● PyYAML 3.05 ● Puedes incluir otras bibliotecas Python puras en tu aplicación.
  • 27. GAE-Python: WEBAPP ● Google App Engine admite cualquier framework creado en su totalidad con Python que utilice el estándar CGI. ● Y cualquier framework compatible con WSGI que utilice un adaptador de CGI. ● Incluidos Django, CherryPy, Pylons y web.py. ● App Engine incluye un sencillo framework para aplicaciones web denominado webapp. ●El framework webapp está instalado en el entorno de App Engine y en el kit de desarrollo de software (SDK), por lo que no tendrás que asociarlo al código de tu aplicación para utilizarlo.
  • 28. GAE-Webapp: Partes ● Una o varias clases RequestHandler que procesan solicitudes y generan respuestas, ● Una instancia de WSGIApplication que dirige las solicitudes entrantes a los controladores en función de su URL. ● Una rutina principal que ejecuta WSGIApplication con un adaptador de CGI.
  • 29. GAE-Webapp: Hola Mundo from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app class MainPage(webapp.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('Hello, webapp World!') application = webapp.WSGIApplication( [('/', MainPage)], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main()
  • 30. GAE-Webapp: Funciones ● El módulo webapp está incluido en el paquete google.appengine.ext. Este módulo se facilita con el SDK y también se encuentra en el entorno de tiempo de ejecución de producción. ● Cuando webapp recibe una solicitud GET HTTP para una URL , crea una instancia de la clase y ejecuta el método get de esa instancia. ● Se puede obtener información sobre la solicitud y respuesta dentro del método con self.request y self.response. ● La propia aplicación se representa mediante una instancia de webapp.WSGIApplication. ● La función run_wsgi_app() utiliza una instancia WSGIApplication (u otro objeto de aplicación compatible con WSGI) y la ejecuta en el entorno CGI de App Engine.
  • 31. GAE-Webapp: Cuentas google from google.appengine.api import users from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app class MainPage(webapp.RequestHandler): def get(self): user = users.get_current_user() if user: self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('Hello, ' + user.nickname()) else: self.redirect(users.create_login_url(self.request.uri)) application = webapp.WSGIApplication([('/', MainPage)], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main()
  • 32. GAE-Django: Introducción ● Google App Engine incluye Django 0.96. ● Si estás utilizando la última versión estable, no tendrás que instalar nada. ● Sólo tendrás que importar tus módulos de Django como harías normalmente. ● También se cubren las modificaciones que se deben incluir si se utiliza la versión de desarrollo de Django.
  • 33. GAE-Django: Controlador WSGI I ● Para que tu aplicación Django se inicie con el controlador WSGI, sólo tienes que realizar unos sencillos pasos. ● Debes importar util desde google.appengine.ext.webapp y el módulo del controlador desde Django. ● Por otra parte, en lugar de gestionar las excepciones con manage.py, es posible registrar todas las excepciones con Google App Engine y visualizar los registros en la consola de administración.
  • 34. GAE-Django: Controlador WSGI II import logging, os # Google App Engine imports. from google.appengine.ext.webapp import util # Force Django to reload its settings. from django.conf import settings settings._target = None # Must set this env var before importing any part of Django os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' import logging import django.core.handlers.wsgi import django.core.signals import django.db import django.dispatch.dispatcher
  • 35. GAE-Django: Controlador WSGI III def log_exception(*args, **kwds): logging.exception('Exception in request:') # Log errors. django.dispatch.dispatcher.connect( log_exception, django.core.signals.got_request_exception) # Unregister the rollback event handler. django.dispatch.dispatcher.disconnect( django.db._rollback_on_exception, django.core.signals.got_request_exception) def main(): # Create a Django application for WSGI. application = django.core.handlers.wsgi.WSGIHandler() # Run the WSGI CGI handler with that application. util.run_wsgi_app(application) if __name__ == '__main__': main()
  • 36. GAE-Django: Controlador WSGI IV ● app.yaml application: my_application version: 1 runtime: python api_version: 1 handlers: - url: /static static_dir: static - url: /.* script: main.py
  • 37. GAE-Django: Versión de desarrollo I ● Para utilizar la versión de desarrollo, debes descargar todo el proyecto de Django e incluirlo en el directorio de nivel superior de tu aplicación. ● Para reducir el número de archivos implementados en Google App Engine, puedes eliminar los siguientes directorios de tu carpeta de Django: ● django/bin ● django/contrib/admin ● django/contrib/auth ● django/contrib/databrowse ● django/test ● Se tiene que modificar "main.py" para eliminar la versión estándar de Django y cargar la copia que hayas incluido con tu aplicación.
  • 38. GAE-Django:Versión de desarrollo II import logging, os, sys # Google App Engine imports. from google.appengine.ext.webapp import util # Remove the standard version of Django. for k in [k for k in sys.modules if k.startswith('django')]: del sys.modules[k] # Force sys.path to have our own directory first, in case we want to import # from it. sys.path.insert(0, os.path.abspath(os.path.dirname(__file__))) # Must set this env var *before* importing any part of Django os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
  • 39. GAE-Django:Versión desarrollo III import django.core.handlers.wsgi import django.core.signals import django.db import django.dispatch.dispatcher def main(): # Create a Django application for WSGI. application = django.core.handlers.wsgi.WSGIHandler() # Run the WSGI CGI handler with that application. util.run_wsgi_app(application) if __name__ == '__main__': main()
  • 40. GAE-Django: Configuración I ● App Engine no admite los modelos de Django. ● Se tienen que dejar vacías todas las cadenas "DATABASE_*". ● Las aplicaciones y el middleware de administración y autenticación se deberán inhabilitar, ya que requieren el uso de modelos de Django. ● Las funciones que proporcionan se encuentran cubiertas por la consola de administración y el API de usuarios de App Engine, respectivamente. ● Las sesiones también dependen de modelos de Django, por lo que también tienes que inhabilitarlas. ●Por último, deberás sustituir las referencias a "project.ap" con "app" y establecer de forma dinámica la ruta de tu directorio de plantillas.
  • 41. GAE-Django: Configuración II import os ROOT_URLCONF = 'urls' # Replace 'project.urls' with just 'urls' MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', # 'django.contrib.sessions.middleware.SessionMiddleware', # 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware', ) INSTALLED_APPS = ( # 'django.contrib.auth', 'django.contrib.contenttypes', # 'django.contrib.sessions', 'django.contrib.sites', ) ROOT_PATH = os.path.dirname(__file__) TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or # "C:/www/django/templates". Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. ROOT_PATH + '/templates', )
  • 42. GAE-Django: Entorno desarrollo ●El kit de desarrollo de software (SDK) de Google App Engine incluye el servidor web de desarrollo dev_appserver.py. ● Te permite implementar tu aplicación en el entorno de desarrollo de Google App Engine. ● Además, no tendrás que utilizar manage.py para sincronizar tu base de datos al utilizar el almacén de datos de Google App Engine.
  • 43. Referencias ● Python en GAE http://code.google.com/intl/es/appengine/docs/python/gettingstarted/introduction.htm ● Django en GAE http://code.google.com/intl/es-ES/appengine/articles/django.html ● Almacenamiento de datos para Django en GAE http://code.google.com/intl/es-ES/appengine/articles/django-nonrel.html

Notas del editor

  1. Se puede hacer desde eclipse o también desde línea de comandos.
  2. Si se supera el limite de las cuotas devuelve un error. Las cuotas se renuevan cada dia. Se pueden ampliar las cuotas pagando. Solo se pagará cuando se superen los limites gratuitos.