Questo tutorial mostra come segnalare e monitorare le eccezioni non rilevate nell'app Python Python utilizzando Google Cloud Console.
Error Reporting fornisce una dashboard centralizzata che mostra i conteggi di ogni errore univoco, le analisi dello stack e una cronologia delle occorrenze. Puoi anche configurare un avviso in caso di errori.
Questa pagina fa parte di un tutorial su più pagine. Per ricominciare dall'inizio e leggere le istruzioni per la configurazione, vai all'app Python Python.
Configurazione delle impostazioni
Questa sezione utilizza il codice nella directory 5-logging
. Modifica i file
ed esegui comandi in questa directory.
-
Apri il file
config.py
per modificare e sostituire i seguenti valori: -
Imposta il valore di
[PROJECT_ID]
sul tuo ID progetto, visibile in Cloud Console. -
Imposta il valore di
[DATA_BACKEND]
sullo stesso valore utilizzato durante il tutorial sull'utilizzo dei dati strutturati. -
Se utilizzi Cloud SQL o MongoDB, imposta i valori nella sezione
Cloud SQL
oMongo
sugli stessi valori utilizzati durante il passaggio Utilizzo dei dati strutturati. -
Imposta il valore di
[CLOUD_STORAGE_BUCKET]
sul nome del bucket di Cloud Storage. -
Nella sezione
OAuth2 configuration
, imposta i valori di[GOOGLE_OAUTH2_CLIENT_ID]
e[GOOGLE_OAUTH2_CLIENT_SECRET]
sull'ID client e sul secret dell'applicazione che hai creato in precedenza. -
Salva e chiudi il file
config.py
.
Se utilizzi Cloud SQL:
-
Apri il file
app.yaml
per la modifica. -
Imposta il valore di
cloudsql-instance
sullo stesso valore utilizzato per[CLOUDSQL_CONNECTION_NAME]
nel fileconfig.py
. Utilizza il formatoproject:region:cloudsql-instance
. Rimuovi il commento da questa riga. -
Salva e chiudi il file
app.yaml
.
Installazione delle dipendenze
Per creare un ambiente virtuale e installare le dipendenze, utilizza i comandi seguenti:
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
Esecuzione dell'applicazione nella macchina locale
Avvia un server web locale:
python main.py
Nel browser, inserisci il seguente indirizzo:
http://localhost:8080
Premi Ctrl+C per uscire dal worker e quindi sul server web locale.
Distribuzione dell'applicazione nell'ambiente flessibile di App Engine
Distribuisci l'applicazione di esempio:
gcloud app deploy
Nel browser, inserisci il seguente URL:
https://PROJECT_ID.REGION_ID.r.appspot.com
Sostituisci quanto segue:
PROJECT_ID
: l'ID del tuo progetto Google CloudREGION_ID
: un codice assegnato da App Engine alla tua app
Se aggiorni l'app, devi eseguire il deployment della versione aggiornata inserendo lo stesso comando che hai utilizzato per il deployment dell'app. Il deployment crea una nuova versione dell'app e la promuove alla versione predefinita. Vengono mantenute le versioni precedenti dell'app e le istanze della macchina virtuale (VM) associate. Tutte queste versioni di app e istanze VM sono risorse fatturabili. Per ridurre i costi, elimina le versioni non predefinite dell'app.
Per eliminare una versione dell'applicazione:
- 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.
- Per eliminare la versione dell'app, fai clic su Elimina.
Per ulteriori informazioni sulla pulizia delle risorse fatturabili, consulta la sezione Pulizia nel passaggio finale di questo tutorial.
Simula un errore
Per visualizzare Error Reporting in azione, introduci intenzionalmente un errore nel codice, quindi cerca l'eccezione nella pagina Error Reporting di Cloud Console.
In
bookshelf/crud.py
, aggiungi un'operazione che accede a una variabile non definita e genera unReferenceError
nella visualizzazione indice.@crud.route("/") def list(): x[3]
Esegui il deployment dell'app.
gcloud app deploy
Accedere alla pagina Indice.
gcloud app browse
Puoi visualizzare il messaggio
An internal error occurred
.In Cloud Console, vai alla pagina Error Reporting.
Puoi vedere l'errore nell'elenco.
Fai clic sull'errore per visualizzare le relative informazioni, ad esempio quando è stato rilevato l'ultima volta, il numero di volte in cui si è verificato, un istogramma delle volte in cui si è verificato e l'analisi dello stack.
Nozioni di base sul codice
Per segnalare le eccezioni non rilevate, il codice utilizza prima il
decodificatore Flask errorhandler
, quindi segnala l'eccezione a Error Reporting
utilizzando le librerie client di Cloud per Python.
Il client aggiunge automaticamente le informazioni di tracciamento e utilizza una funzione helper per estrarre i dettagli pertinenti della richiesta dalla richiesta Flask, che completa Error Reporting con le analisi dello stack e i contesti HTTP pertinenti per qualsiasi eccezione InternalServerError
HTTP 500
non rilevata nella tua app.
Esegui la pulizia
Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- 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.