Neste tutorial, mostramos como informar e rastrear exceções não detectadas no app Python Notebooks usando o Console do Google Cloud.
O Error Reporting fornece um painel centralizado que mostra contagens de cada erro exclusivo, rastreamentos de pilha e um histórico de ocorrências. Também é possível configurar um alerta para quando ocorrerem erros.
Esta página faz parte de um tutorial com várias páginas. Para começar do início e ver as instruções de configuração, consulte o artigo Aplicativo Bookshelf em Python.
Definir configurações
Esta seção usa código no diretório 5-logging
. Edite os arquivos e execute os comandos nesse diretório.
-
Abra o arquivo
config.py
para edição e substitua os seguintes valores: -
Defina o valor de
[PROJECT_ID]
como o ID do seu projeto, visível no Console do Cloud. -
Defina o valor de
[DATA_BACKEND]
com o mesmo valor usado no tutorial Como usar dados estruturados. -
Se você estiver usando o Cloud SQL ou o MongoDB, defina os valores na
seção
Cloud SQL
ouMongo
como os mesmos usados na etapa Como usar dados estruturados. -
Defina o valor de
[CLOUD_STORAGE_BUCKET]
como o nome do bucket do Cloud Storage. -
Na seção
OAuth2 configuration
, defina os valores de[GOOGLE_OAUTH2_CLIENT_ID]
e[GOOGLE_OAUTH2_CLIENT_SECRET]
como o ID do cliente do aplicativo e a chave secreta que você criou anteriormente. -
Salve e feche o arquivo
config.py
.
Se estiver usando o Cloud SQL:
-
Abra o arquivo
app.yaml
para edição. -
Defina o valor de
cloudsql-instance
como o mesmo valor usado em[CLOUDSQL_CONNECTION_NAME]
no arquivoconfig.py
. Use o formatoproject:region:cloudsql-instance
. Remova todo o comentário dessa linha. -
Salve e feche o arquivo
app.yaml
.
Instalar dependências
Para criar um ambiente virtual e instalar dependências, use os comandos a seguir:
Linux/macOS
virtualenv -p python3 env
source env/bin/activate
pip install -r requirements.txt
Windows
virtualenv -p python3 env
env\scripts\activate
pip install -r requirements.txt
Execução do app na máquina local
Inicie um servidor da Web local:
python main.py
No navegador, digite o seguinte endereço:
http://localhost:8080
Pressione Control+C para sair do worker e depois do servidor da Web local.
Como implantar o app no ambiente flexível do App Engine
Implante o app de amostra:
gcloud app deploy
No navegador, digite o seguinte URL:
https://PROJECT_ID.REGION_ID.r.appspot.com
Substitua:
PROJECT_ID
: é o ID do projeto do Google Cloud.REGION_ID
: um código que o App Engine atribui ao seu app
Se você atualizar o app, implante a versão atualizada inserindo o mesmo comando usado para implantá-lo. A implantação cria uma nova versão do app e a define como padrão. As versões anteriores do app são mantidas, assim como as instâncias de máquina virtual (VM, na sigla em inglês) associadas. Todas essas versões de app e instâncias de VM são recursos faturáveis. Para reduzir custos, exclua as versões não padrão do seu app.
Para excluir uma versão do app:
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Para excluir a versão do app, clique em Excluir.
Para mais informações sobre como limpar recursos faturáveis, consulte a seção Como fazer limpeza na etapa final deste tutorial.
Simular um erro
Para ver o Error Reporting em ação, insira intencionalmente um erro no seu código e procure a exceção na página do Error Reporting no Console do Cloud.
Em
bookshelf/crud.py
, adicione uma operação que acesse uma variável indefinida e gere umReferenceError
na visualização do índice.@crud.route("/") def list(): x[3]
Implante o aplicativo.
gcloud app deploy
Acesse a página de índice.
gcloud app browse
Veja a mensagem
An internal error occurred
.No Console do Cloud, acesse a página Error Reporting do Stackdriver.
O erro será listado.
Clique no erro para ver informações sobre quando ele foi visto pela última vez, o número de vezes que ele ocorreu, um histograma de ocorrências e o rastreamento de pilha.
Como entender o código
Para relatar exceções não identificadas, o código primeiro usa o decorador errorhandler
do Flask.
Depois, relata a exceção para o Error Reporting usando
as
bibliotecas de cliente do Cloud para Python.
O cliente adiciona as informações de rastreamento automaticamente e usa uma função auxiliar para
extrair os detalhes relevantes da solicitação do Flask, que preenche o
Error Reporting com os rastreamentos de pilha e contextos HTTP relevantes para qualquer
exceção InternalServerError
HTTP 500
não detectada no app.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
A maneira mais fácil de evitar cobranças é excluir o projeto criado para o tutorial.
Para excluir o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.