Google App Engine

Llevo esta tarde peleándome con el Google App Engine, para portar el amigo invisible a esto. Y no ha sido trivial. Por un lado, te quedas sin admin. La consola de administración del GAE no es para nada lo mismo. Por otro lado, y mucho mucho mucho más importante, no puedes usar import pdb;pdb.set_trace() Cómo puedes debugar sin eso?!!

Las diferencias con django se producen en la parte de BBDD, ya que se sustituyen los models de django por el sistema de Google. La definición es sencilla, pero los métodos para hacer queries dejan mucho que desear. Y las exceptions lanzadas también son diferentes.

Ojo también con los forms. Los ModelForms se extienden de un paquete de GAE, mientras que los forms normales son los de Django.

Por último, es posible y fácil utilizar Django en su versión actual. Simplemente hay que definir un archivo main.py (y declararlo en el app.yaml), con el siguiente contenido:

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__)))

# Django imports and other code go here...
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi

def main():
  # Run Django via WSGI.
  application = django.core.handlers.wsgi.WSGIHandler()
  util.run_wsgi_app(application)

if __name__ == '__main__':
  main()

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *