Aplicações Web com Python e Google App Engine

28
Aplicações web com Python e Google App Engine Rodrigo Amaral

description

Visão geral dos recursos do Google App Engine e seu ambiente de execução de aplicações em Python

Transcript of Aplicações Web com Python e Google App Engine

Page 1: Aplicações Web com Python e Google App Engine

Aplicações web com Python e Google App Engine

Rodrigo Amaral

Page 2: Aplicações Web com Python e Google App Engine

Olá!

rodrigoamaral

rodrigoamaral.net

Page 3: Aplicações Web com Python e Google App Engine

http://pug-se.github.io

Page 4: Aplicações Web com Python e Google App Engine

Aplicações web são legais

■ Multiplataforma

■ Acessadas de qualquer lugar

■ Fácil distribuição

■ Atualização instantânea

■ Correção de bugs controlada

Page 5: Aplicações Web com Python e Google App Engine

Mas as coisas podem ficar complicadas

■ Múltiplos acessos simultâneos

■ Administração de servidores

■ Precisa de alta disponibilidade

■ Custos de hospedagem

■ Programação precisa ser ágil

Page 6: Aplicações Web com Python e Google App Engine

Platform as a Service (PaaS)

■ Delegar tarefas de administração

■ Permitir escalabilidade

■ Reduzir os custos iniciais

■ Prover serivços auxiliares

Page 7: Aplicações Web com Python e Google App Engine

Google App Engine

Executar aplicações web na infraestrutura do Google

Page 8: Aplicações Web com Python e Google App Engine

Python

■ Tipagem dinâmica

■ Uso geral

■ Multiparadigma

■ Sintaxe clara e legível

■ Introspecção poderosa

■ Rica biblioteca padrão

Page 9: Aplicações Web com Python e Google App Engine

Python cabe no seu cérebro

class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello, World!");

}

}

print "Hello, World!"

JAVA

PYTHON

Page 10: Aplicações Web com Python e Google App Engine

Python cabe no seu cérebro (2)

vetor = [1, 2, 3, 4, 5, 6, 7]

quadrado_pares = [n ** 2 for n in vetor if n % 2 == 0]

print(quadrado_pares) # mostra [4, 16, 36]

QUADRADO DOS NÚMEROS PARES EM UM VETOR

Page 11: Aplicações Web com Python e Google App Engine

Python cabe no seu cérebro (3)

import random

sorteio = 'Pedro Maria Paulo Joana Renato Sofia'.split()

print random.choice(sorteio)

SORTEIO SIMPLES

Page 12: Aplicações Web com Python e Google App Engine

Características do Google App Engine

Page 13: Aplicações Web com Python e Google App Engine

Sandbox

■ Ambiente protegido

■ Facilita distribuição da demanda

■ Não escreve no sistema de arquivos

■ Somente HTTP(S) nas portas padrão

■ Não dispara subprocessos

■ Não enxerga outras aplicações

Page 14: Aplicações Web com Python e Google App Engine

Armazenamento de dados

■ Datastore

● banco de dados não-relacional

● entidades, tipos, propriedades

● schemaless

■ Google Cloud SQL

● banco de dados relacional

■ Google Cloud Storage

Page 15: Aplicações Web com Python e Google App Engine

Autenticação e autorização

■ Google Accounts

■ Users API

Page 16: Aplicações Web com Python e Google App Engine

Serviços

■ URL Fetch

■ Mail

■ XMPP

■ Memcache

■ Manipulação de imagens

■ Fila de tarefas

Page 17: Aplicações Web com Python e Google App Engine

Ambiente de execução de aplicações Python

Page 18: Aplicações Web com Python e Google App Engine

Python App Engine SDK

■ Servidor de aplicação que simula o

ambiente App Engine● dev_appserver.py

■ Utilitário para upload● appcfg.py

■ Interface gráfica (Windows e Mac)

■ Python 2.7

Page 19: Aplicações Web com Python e Google App Engine

Web Server Gateway Interface (WSGI)

■ Especifica a comunicação entre

servidores web e aplicações

■ Se o framework é compatível,

funciona com o App Engine

■ Django, Flask, Pyramid, Bottle etc.

■ webapp2

Page 20: Aplicações Web com Python e Google App Engine

Estrutura da aplicação

DatastoreTemplates

Cliente

app.yaml

Identificação

Versão

Resolução de URLs

Permissões

script.py

Aplicação WSGI

Módulos da aplicação

Frameworks e bibliotecas

APIs de serviços

requisição

resposta

Page 21: Aplicações Web com Python e Google App Engine

ExemploEntendendo o código de uma aplicação

simples

Page 22: Aplicações Web com Python e Google App Engine

relogio.py

import webapp2import datetime

class PaginaPrincipal(webapp2.RequestHandler): def get(self): self.response.headers['Content-type'] = 'text/plain' self.response.write(datetime.datetime.now())

aplicacao = webapp2.WSGIApplication([ ('/', PaginaPrincipal)], debug=True)

Page 23: Aplicações Web com Python e Google App Engine

app.yaml

application: relogioversion: 1runtime: python27api_version: 1threadsafe: true

handlers:- url: /.* script: relogio.aplicacao

Page 24: Aplicações Web com Python e Google App Engine

Servidor de aplicação local dev_appserver.py

# dev_appserver.py <diretorio_da_aplicacao>

Linha de comando

INFO 2013-12-09 19:58:56,850 api_server.py:138] Starting API server at: http://localhost:50958INFO 2013-12-09 19:58:56,863 dispatcher.py:171] Starting module "default" running at: http://localhost:8080INFO 2013-12-09 19:58:56,867 admin_server.py:117] Starting admin server at: http://localhost:8000

Page 25: Aplicações Web com Python e Google App Engine

Resultado no browser

Page 26: Aplicações Web com Python e Google App Engine

Uploadappcfg.py

# appcfg.py update <diretorio_da_aplicacao>

Page 27: Aplicações Web com Python e Google App Engine

Para saber mais

Google Developershttps://developers.google.com/appengine/

Programming Google App EngineLivro - Editora O’Reilly

Stack Overflowhttp://stackoverflow.com/questions/tagged/google-app-engine

Page 28: Aplicações Web com Python e Google App Engine

Obrigado!