Guia de início rápido para Python no ambiente flexível do App Engine

ID da região

O REGION_ID é um código que o Google atribui com base na região selecionada ao criar o aplicativo. A inclusão de REGION_ID.r nos URLs do App Engine é opcional para aplicativos atuais e em breve será obrigatória para todos os aplicativos novos.

Para garantir uma transição tranquila, estamos atualizando lentamente o App Engine para usar IDs da região. Se ainda não tivermos atualizado seu projeto do Google Cloud, você não verá um ID da região para o aplicativo. Como o ID é opcional para os aplicativos atuais, não é necessário atualizar os URLs ou fazer outras alterações quando o ID da região está disponível para os aplicativos já existentes.

Saiba mais sobre IDs da região.

Neste guia de início rápido, você aprenderá a criar um pequeno aplicativo do App Engine que exibe uma mensagem curta.

Antes de começar

Antes de executar e implantar este guia de início rápido, instale o SDK do Cloud e configure um projeto do Cloud para o App Engine:

  1. Faça o download e instale o SDK do Cloud:

    Fazer o download do SDK

    Observação: se o SDK do Cloud já estiver instalado, atualize-o executando o comando a seguir:

    gcloud components update
    
  2. Crie um novo projeto:

    gcloud projects create [YOUR_PROJECT_ID] --set-as-default
    

    Substitua [YOUR_PROJECT_ID] por uma string de caracteres que identifique seu projeto de forma exclusiva. Por exemplo, my-project-24.

    Verifique se o projeto foi criado:

    gcloud projects describe [YOUR_PROJECT_ID]
    

    Você verá detalhes do projeto parecidos com o seguinte:

    createTime: year-month-hour
    lifecycleState: ACTIVE
    name: project-name
    parent:
    id: '433637338589'
    type: organization
    projectId: project-name-id
    projectNumber: 499227785679
    
  3. Inicialize seu aplicativo do App Engine com o projeto e escolha a região:

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    Quando solicitado, selecione a região em que o aplicativo do App Engine será localizado.

  4. Verifique se o faturamento está ativado no projeto. Uma conta de faturamento precisa estar vinculada ao projeto para que o aplicativo seja implantado no App Engine.

    Ativar faturamento

    A implantação do ambiente flexível gerará custos enquanto estiver ativa. Limpe o projeto quando terminar para evitar custos contínuos.

  5. Instale os pré-requisitos a seguir:

    • Execute o seguinte comando para instalar o componente do gcloud que inclui a extensão do App Engine para Python:

      gcloud components install app-engine-python
      

  6. Prepare o ambiente para o desenvolvimento do Python. É recomendável ter a versão mais recente do Python, pip e outras ferramentas relacionadas instaladas em seu sistema. Para mais instruções, consulte o Guia de configuração do ambiente de desenvolvimento do Python.

Locais do App Engine

Como o App Engine é regional, a infraestrutura de execução dos aplicativos está localizada em uma determinada região e é gerenciada pelo Google. Assim, ela fica disponível de modo redundante em todas as zonas dessa região.

Atender aos requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região de execução dos aplicativos. Geralmente, é possível selecionar a região mais próxima aos usuários do seu aplicativo, mas considere a localização dos outros produtos e serviços do Google Cloud usados pelo seu aplicativo. Usar serviços em vários locais pode afetar a latência do seu aplicativo, bem como preços.

O App Engine está disponível nas regiões a seguir:

  • northamerica-northeast1 (Montreal)
  • us-central (Iowa)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • southamerica-east1 (São Paulo)
  • europe-west (Bélgica)
  • europe-west2 (Londres)
  • europe-west3 (Frankfurt)
  • europe-west6 (Zurique)
  • asia-northeast1 (Tóquio)
  • asia-northeast2 (Osaka)
  • asia-northeast3 (Seul)
  • asia-east2 (Hong Kong)
  • asia-south1 (Mumbai)
  • australia-southeast1 (Sydney)

Não é possível alterar a região de um aplicativo depois de defini-la.

Se você já criou um aplicativo do App Engine, é possível visualizar a região seguindo um destes procedimentos:

Neste guia de início rápido, você verá a demonstração de um aplicativo simples em Python, gravado com o framework da Web Flask que pode ser implantado no App Engine. O Flask é usado nesta amostra, mas é possível usar qualquer framework da Web que atenda aos requisitos mencionados acima. Outros exemplos de framework são Django, Pyramid, Bottle, e web.py.

Download do app Hello World

Criamos um aplicativo Hello World simples para Python. Assim, você pode ter uma ideia de como implantar um aplicativo no Google Cloud.

  1. Clone o repositório do app de amostra Hello World na máquina local.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    Outra opção é fazer o download da amostra como um arquivo zip e extraí-lo.

  2. Acesse o diretório que contém o código de amostra.

    cd python-docs-samples/appengine/flexible/hello_world
    

Como executar o Hello World na máquina local

Para executar o aplicativo Hello World no seu computador:

Mac OS/Linux

  1. Crie um ambiente Python isolado em um diretório fora do projeto e ative-o:
    python3 -m venv env
    source env/bin/activate
  2. Navegue até o diretório do projeto e instale as dependências:
    cd YOUR_PROJECT
    pip install  -r requirements.txt
  3. Execute o aplicativo:
    python main.py
  4. No navegador da Web, digite este endereço:
    http://localhost:8080

Windows

Use o PowerShell para executar os pacotes Python.

  1. Localize a instalação do PowerShell.
  2. Clique com o botão direito do mouse no atalho do PowerShell e inicie-o como administrador.
  3. Crie um ambiente Python isolado em um diretório fora do projeto e ative-o:
    python -m venv env
    env\Scripts\activate
  4. Navegue até o diretório do projeto e instale as dependências:
    cd YOUR_PROJECT
    pip install -r requirements.txt
  5. Execute o aplicativo:
    python main.py
  6. No navegador da Web, digite este endereço:
    http://localhost:8080

A mensagem Hello World do aplicativo de amostra é exibida na página. Na janela do terminal, pressione Ctrl+C para sair do servidor da Web.

Implantar e executar o Hello World no App Engine

Para implantar o aplicativo Hello World no ambiente flexível do App Engine:

  1. Implemente o aplicativo Hello World executando o comando a seguir no diretório hello_world:

    gcloud app deploy

    Saiba mais sobre sinalizações opcionais.

    Sinalizações comuns do comando gcloud

    • Inclua a sinalização --version para especificar um ID exclusivo da versão do seu app. Quando a sinalização não é incluída, o ID é gerado automaticamente. Exemplo: --version [YOUR_VERSION_ID]
    • Inclua a sinalização --project para especificar um código de projeto alternativo do Cloud para o que você inicializou como padrão na ferramenta gcloud. Exemplo: --project [YOUR_PROJECT_ID]

    Exemplo:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    Para aprender a implantar o app pela linha de comando, consulte Como testar e implantar o app. Para uma lista de todas as sinalizações de comando, consulte a referência do gcloud app deploy.

  2. Inicie o navegador para visualizar o app em https://PROJECT_ID.REGION_ID.r.appspot.com

    gcloud app browse
    em que PROJECT_ID representa o ID do projeto do Google Cloud.

Nesse momento, a página que exibe a mensagem Hello World é enviada por um servidor da Web executado em uma instância do App Engine.

Parabéns! Você implantou seu primeiro aplicativo em Python no ambiente flexível do App Engine.

Nas seções a seguir, veja as informações sobre limpeza e os links para as próximas etapas que você pode realizar.

Limpar

Exclua o projeto do Google Cloud para não ser cobrado pelos recursos usados nele.

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página Gerenciar recursos

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir

Conheça a plataforma inteira

Agora que você sabe como é desenvolver e implantar aplicativos do App Engine, explore o restante do Google Cloud. Você já tem o SDK do Cloud instalado, que oferece as ferramentas para interagir com produtos como Cloud SQL, Cloud Storage, Firestore e muito mais.

Para ver um passo a passo sobre como criar um aplicativo que usa toda a plataforma, em vez de somente o App Engine, confira nosso guia de início rápido sobre a criação do app Bookshelf.

Saiba mais sobre o ambiente flexível do App Engine

Listamos alguns tópicos para você continuar aprendendo sobre o App Engine.

Revisão do código do Hello World

O Hello World é o app mais simples possível do App Engine. Nele, há apenas um serviço e uma versão, e todo o código é armazenado no diretório raiz. Nesta seção, cada arquivo do app é descrito em detalhes.

main.py

O aplicativo Hello World é um aplicativo básico Flask de um arquivo.

import logging

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    return 'Hello World!'

@app.errorhandler(500)
def server_error(e):
    logging.exception('An error occurred during a request.')
    return """
    An internal error occurred: <pre>{}</pre>
    See logs for full stacktrace.
    """.format(e), 500

if __name__ == '__main__':
    # This is used when running locally. Gunicorn is used to run the
    # application on Google App Engine. See entrypoint in app.yaml.
    app.run(host='127.0.0.1', port=8080, debug=True)

app.yaml

O arquivo app.yaml descreve a configuração de implantação do aplicativo:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Neste caso, app.yaml especifica o ambiente de execução usado pelo aplicativo e configura o env: flex, que determina o uso do ambiente flexível.

O entrypoint informa ao App Engine como iniciar o aplicativo. Este aplicativo usa gunicorn para disponibilizar o aplicativo Python. A variável $PORT é definida pelo App Engine quando inicia o aplicativo. Para mais informações sobre entrypoint, consulte Inicialização do app.

Além disso, na seção opcional runtime_config, a python_version é definida como Python 3. Se python_version não for especificado, o Python 2 será usado por padrão. Também é possível especificar python_version: 2 explicitamente.

requirements.txt

requirements.txt e o gerenciador de pacotes Python pip são usados para declarar e instalar dependências de aplicativos. No caso do Hello World, são necessários a biblioteca da Web Flask e o servidor WSGI Gunicorn (link em inglês).

Flask==1.1.2
gunicorn==20.0.4

O requirements.txt define as bibliotecas que serão instaladas localmente e durante a implantação no App Engine.