Django sobre Google App Engine
Saudações a todos!
Esta semana tive a ideia de testar o Google App Engine (GAE), publicando uma pequena aplicação feita por mim sob o django. Fiquei surpreso com a simplicidade de uso do SDK e o suporte fornecidos pelo Google. O GAE compreende uma quantidade razoável de APIs e recursos, inclusive persistência de dados. Outra coisa interessante é o dashboard - página de gerência da aplicação - onde é possível acompanhar o desempenho da aplicação e o consumo de recursos do cluster.
Para publicar minha aplicação, uma vez que eu já havia finalizado-a em "django puro", ou seja, sem o SDK do GAE, precisei fazer algumas adequações no código para garantir compatibilidade com a estrutura do GAE. Nesse momento, o artigo Django on Google App Engine in 13 simple steps[1] (em inglês) de Thomas Brox Røst foi de muita valia. Depois que eu conclui meu projeto descobri uma tradução livre para o português deste mesmo artigo[2].
Dicionário Michaelis Português-Português
Existe uma versão on-line do dicionário da língua portuguesa Michaelis[5]. A aplicação que construi desenvolvendo este artigo recebe uma palavra por parâmetro e realiza uma requisição na página do Michaelis on-line, tratando a resposta desta, de forma que a saída consista apenas do texto plano do conteúdo, eliminando todas as tags html, referentes a formatação, publicidade, etc. Esta aplicação chamei de michaflea[6] - a junção de micha de Michaelis e flea pulga em inglês.
Criando e Publicando uma aplicação no Google App Engine
A primeira coisa que você precisa fazer para iniciar o seu projeto é baixar o SDK[3] fornecido pelo Google.
Antes de iniciar literalmente a codificação, é interessante que você registre antecipadamente o nome da aplicação, reservando o espaço para publicá-lo. Para isso, você necessitará de uma conta no Google e de uma linha de telefone celular. Siga as intruções no site[4].
Como estou usando o Linux, para instalar o SDK, basta descompactar o pacote.
Crie um diretório para comportar o projeto. No diretório recém-criado, crie um arquivo chamado main.py com o seguinte conteúdo:
Crie no mesmo diretório um arquivo chamado app.yaml contendo:
Uma vez que a aplicação está pronta, podemos agora testá-la usando o GAE. Para isto, faremos uso do utilitário dev_appserver.py que vem na SDK baixada anteriormente.
Para facilitar minha vida, eu criei, dentro do diretório de instalação do SDK, um link simbólico apontando para a pasta do projeto, daí, executei:
Uma vez que minha aplicação está devidamente testada e funcionando, pode-se realizar o upload da mesma para o serviço Google App Engine. Para este fim, usa-se outro utilitário que vem com o SDK, o appcfg.py.
Na primeira vez em que o upload for feito, você terá que informar seu e-mail e sua senha do google.
Pronto! Para ver a aplicação funcionando, acesse http://michaflea.appspot.com/.
Requisitos
Referências
Esta semana tive a ideia de testar o Google App Engine (GAE), publicando uma pequena aplicação feita por mim sob o django. Fiquei surpreso com a simplicidade de uso do SDK e o suporte fornecidos pelo Google. O GAE compreende uma quantidade razoável de APIs e recursos, inclusive persistência de dados. Outra coisa interessante é o dashboard - página de gerência da aplicação - onde é possível acompanhar o desempenho da aplicação e o consumo de recursos do cluster.
Para publicar minha aplicação, uma vez que eu já havia finalizado-a em "django puro", ou seja, sem o SDK do GAE, precisei fazer algumas adequações no código para garantir compatibilidade com a estrutura do GAE. Nesse momento, o artigo Django on Google App Engine in 13 simple steps[1] (em inglês) de Thomas Brox Røst foi de muita valia. Depois que eu conclui meu projeto descobri uma tradução livre para o português deste mesmo artigo[2].
Dicionário Michaelis Português-Português
Existe uma versão on-line do dicionário da língua portuguesa Michaelis[5]. A aplicação que construi desenvolvendo este artigo recebe uma palavra por parâmetro e realiza uma requisição na página do Michaelis on-line, tratando a resposta desta, de forma que a saída consista apenas do texto plano do conteúdo, eliminando todas as tags html, referentes a formatação, publicidade, etc. Esta aplicação chamei de michaflea[6] - a junção de micha de Michaelis e flea pulga em inglês.
Criando e Publicando uma aplicação no Google App Engine
A primeira coisa que você precisa fazer para iniciar o seu projeto é baixar o SDK[3] fornecido pelo Google.
Estou levando em consideração que você já tenha experiência com Python e Django, e ambos já estejam instalados e funcionando em sua máquina.
Antes de iniciar literalmente a codificação, é interessante que você registre antecipadamente o nome da aplicação, reservando o espaço para publicá-lo. Para isso, você necessitará de uma conta no Google e de uma linha de telefone celular. Siga as intruções no site[4].
Como estou usando o Linux, para instalar o SDK, basta descompactar o pacote.
Crie um diretório para comportar o projeto. No diretório recém-criado, crie um arquivo chamado main.py com o seguinte conteúdo:
# main.pyRepare que na linha 4 a variável os.environ["DJANGO_SETTINGS_MODULE"] está recebendo o modulo setings do projeto michaflea. Repare ainda que a linha 5 indica o caminho absoluto da pasta que comporta o projeto.
import os, sys
os.environ["DJANGO_SETTINGS_MODULE"] = "michaflea.settings"
sys.path.append("/home/helder/Projects/GoogleAppEngine/michaflea")
# 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
import django.core.handlers.wsgi
import django.core.signals
import django.db
import django.dispatch.dispatcher
# 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()
Crie no mesmo diretório um arquivo chamado app.yaml contendo:
application: michafleaAinda no mesmo diretório, crie o projeto django:
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
script: main.py
michaflea$ django-admin.py startproject michaflea
Aqui você irá utilizar toda a sua habilidade de desenvolvedor django.
Uma vez que a aplicação está pronta, podemos agora testá-la usando o GAE. Para isto, faremos uso do utilitário dev_appserver.py que vem na SDK baixada anteriormente.
Para facilitar minha vida, eu criei, dentro do diretório de instalação do SDK, um link simbólico apontando para a pasta do projeto, daí, executei:
helder@helder-laptop:~/Programs/google_appengine$ ./dev_appserver.py michafleaCom isso, pude checar o funcionamento da minha aplicação, acessando-a na URL http://localhost:8080/ .
INFO 2009-04-17 15:54:40,667 appcfg.py] Server: appengine.google.com
INFO 2009-04-17 15:54:40,680 appcfg.py] Checking for updates to the SDK.
WARNING 2009-04-17 15:54:41,279 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore
WARNING 2009-04-17 15:54:41,280 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore.history
INFO 2009-04-17 15:54:41,552 dev_appserver_main.py] Running application michaflea on port 8080: http://localhost:8080
Uma vez que minha aplicação está devidamente testada e funcionando, pode-se realizar o upload da mesma para o serviço Google App Engine. Para este fim, usa-se outro utilitário que vem com o SDK, o appcfg.py.
helder@helder-laptop:~/Programs/google_appengine$ ./appcfg.py update michaflea
Na primeira vez em que o upload for feito, você terá que informar seu e-mail e sua senha do google.
Pronto! Para ver a aplicação funcionando, acesse http://michaflea.appspot.com/.
Requisitos
- Ubuntu 8.04 (ou superior)
- Python 2.5
- GoogleAppEngine 1.1.5
- Django 1.0.2
Referências
- [1] http://thomas.broxrost.com/2008/04/08/django-on-google-app-engine/
- [2] http://marcioandreyoliveira.blogspot.com/2009/04/13-passos-simples-para-termos-o-django.html
- [3] http://code.google.com/intl/pt-BR/appengine/downloads.html
- [4] http://code.google.com/intl/pt-BR/appengine/
- [5] http://michaelis.uol.com.br/
- [6] http://michaflea.appspot.com/
Boa ideia!
ResponderExcluir