Top Banner
Oficina Python e Google App Engine Rodrigo Amaral Google Developers Group Aracaju Fevereiro de 2014
43

Oficina Python e Google App Engine

Dec 18, 2014

Download

Technology

Rodrigo Amaral

Slides com o roteiro do mini-curso prático de introdução ao Google App Engine com Python
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Oficina Python e Google App Engine

Oficina Python e Google App Engine

Rodrigo Amaral

Google Developers Group AracajuFevereiro de 2014

Page 2: Oficina Python e Google App Engine

Olá!

rodrigoamaral

rodrigoamaral.net

Page 3: Oficina Python e Google App Engine

http://pug-se.github.io

Page 4: Oficina 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: Oficina 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: Oficina Python e Google App Engine

Platform as a Service (PaaS)

■ Delegar tarefas de administração

■ Permitir escalabilidade

■ Reduzir os custos iniciais

■ Prover serviços auxiliares

Page 7: Oficina Python e Google App Engine

Google App Engine

Executar aplicações web na infraestrutura do Google

Page 8: Oficina Python e Google App Engine

Google App EngineCaracterísticas da plataforma

Page 9: Oficina 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 10: Oficina 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 11: Oficina Python e Google App Engine

Autenticação e autorização

■ Google Accounts

■ Users API

Page 12: Oficina Python e Google App Engine

Serviços

■ URL Fetch

■ Mail

■ XMPP

■ Memcache

■ Manipulação de imagens

■ Fila de tarefas

Page 13: Oficina Python e Google App Engine

PythonVisão geral da linguagem

Page 14: Oficina 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 15: Oficina Python e Google App Engine

Quem usa Python?

Page 16: Oficina 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 17: Oficina 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 18: Oficina 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 19: Oficina Python e Google App Engine

Módulos

⬝ Facilita a organização dos

programas

⬝ Todo arquivo .py é um módulo

⬝ Um módulo faz referência a outro

com o comando import

Page 20: Oficina Python e Google App Engine

Importando módulos>>> import sys>>> print(sys.version)2.7.4 (default, Sep 26 2013, 03:20:56) [GCC 4.7.3]

>>> from math import pi>>> pi3.141592653589793

Page 21: Oficina Python e Google App Engine

Listas [ ]>>> capitais = ["Aracaju", "Recife", "Natal"]>>> capitais['Aracaju', 'Recife', 'Natal']>>> len(capitais)3>>> capitais[1]'Recife'>>> capitais.append("Salvador")>>> capitais['Aracaju', 'Recife', 'Natal', 'Salvador']>>> capitais.insert(2, "Fortaleza")>>> capitais['Aracaju', 'Recife', 'Fortaleza', 'Natal', 'Salvador']

Page 22: Oficina Python e Google App Engine

Listas (cont.)

>>> c = capitais.pop()>>> c'Salvador'>>> capitais['Aracaju', 'Recife', 'Fortaleza', 'Natal']>>> capitais[-1]'Natal'>>> capitais[1:3]['Recife', 'Fortaleza']>>> capitais[:2]['Aracaju', 'Recife']>>> capitais[2:]['Fortaleza', 'Natal']>>> capitais.sort()>>> capitais['Aracaju', 'Fortaleza', 'Natal', 'Recife']

Page 23: Oficina Python e Google App Engine

Iterando

>>> for capital in capitais:... print(capital)... AracajuFortalezaNatalRecife

Page 24: Oficina Python e Google App Engine

Dicionários { }⬝ Parecidos com listas

⬝ Conjunto de chaves e valores

⬝ Cada elemento é uma tupla de chave e

valor

⬝ Estrutura conhecida como mapping,

hash, array associativo etc.

Page 25: Oficina Python e Google App Engine

Acessando valores

>>> agenda = {"Pedro": "2626-2626", "Maria": "2323-2323", "Paulo": "2121-2121"}>>> telefone = agenda["Maria"]>>> telefone'2323-2323'

Page 26: Oficina Python e Google App Engine

Classes

⬝ Definidas com a palavra-chave class⬝ class Pessoa:

⬝ O primeiro argumento de todo método

é self⬝ def meu_metodo(self, x):

⬝ Atributos são referenciados com self⬝ self.atributo = 42

Page 27: Oficina Python e Google App Engine

Chega de papo!Vamos construir juntos uma pequena

aplicação web com Python e App Engine

Page 28: Oficina Python e Google App Engine

Download

http://developers.google.com/appengine/downloads

#Google_App_Engine_SDK_for_Python

Page 29: Oficina 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 30: Oficina Python e Google App Engine

Instalação

Linux: descompactar e configurar $PATH

Windows e Mac: executar instalador

Page 31: Oficina Python e Google App Engine

app.yaml

Entre outras configurações, descreve

o que a aplicação deve fazer quando

uma URL é acessada

Page 32: Oficina 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 33: Oficina Python e Google App Engine

main.py

Módulo principal da nossa aplicação

de exemplo.

É nele que vamos implementar as classes que

tratam nossas requisições.

Page 34: Oficina 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 35: Oficina Python e Google App Engine

webapp2

WSGIApplication

Responsável por rotear as requisições para as

classes que vão tratá-las, de acordo com a URL

Request Handlers

Classes que processam as requisições e constroem

as respostas

Page 36: Oficina Python e Google App Engine

webapp2.RequestHandler

request

- get()

response

- headers

- write(<saida>)

redirect(<url>)

Page 37: Oficina Python e Google App Engine

Integrando com Google Accounts

Users API

from google.appengine.api import users

users.get_current_user()

users.create_login_url(<url_retorno>)

users.create_logout_url(<url_retorno>)

Page 38: Oficina Python e Google App Engine

Manipulando dados de forms

⬝ Implementar método post()

⬝ Obter dados do request

⬝ self.request.get(<nome>)

Page 39: Oficina Python e Google App Engine

Armazenando dados

⬝ Datastore (NDB)

⬝ google.appengine.ext.ndb

⬝ Entidades

⬝ ndb.Model

⬝ Properties

⬝ ndb.StringProperty, ndb.IntegerProperty

etc...

Page 40: Oficina Python e Google App Engine

Templates

⬝ Framework Jinja2

⬝ Arquivos .html

JINJA_ENVIRONMENT = jinja2.Environment( loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), extensions=['jinja2.ext.autoescape'], autoescape=True)

Page 41: Oficina Python e Google App Engine

Arquivos estáticos

⬝ Declarar no app.yamlhandlers- url: /css

static_dir: css

⬝ Handlers são resolvidos na ordem

⬝ URLs com .* devem ficar por último

Page 42: Oficina Python e Google App Engine

Deploy da aplicação

⬝ Registrar aplicação no GAE

⬝ Ajustar configuração no app.yaml

⬝ Upload

⬝ appcfg.py update <pasta>

Page 43: Oficina Python e Google App Engine

Obrigado!