Questo tutorial mostra come segnalare e monitorare le eccezioni non rilevate nel tutorial Guida introduttiva a Python utilizzando la consoleGoogle Cloud .
Error Reporting fornisce una dashboard centralizzata che mostra i conteggi di ogni errore univoco, le tracce dello stack e una cronologia delle occorrenze. Puoi anche configurare un avviso per quando si verificano errori.
Questa pagina fa parte di un tutorial di più pagine. Per iniziare dall'inizio e leggere le istruzioni di configurazione, vai a App Python Bookshelf.
Configurazione delle impostazioni
Questa sezione utilizza il codice nella directory 5-logging. Modifica i file
ed esegui i comandi in questa directory.
-
Apri il file
config.pyper la modifica e sostituisci i seguenti valori: -
Imposta il valore di
[PROJECT_ID]sull'ID progetto, che è visibile nella console Google Cloud . -
Imposta il valore di
[DATA_BACKEND]sullo stesso valore che hai utilizzato durante l'esercitazione Utilizzo dei dati strutturati. -
Se utilizzi Cloud SQL o MongoDB, imposta i valori nella sezione
Cloud SQLoMongosugli stessi valori utilizzati durante il passaggio Utilizzo di dati strutturati. -
Imposta il valore di
[CLOUD_STORAGE_BUCKET]sul nome del tuo bucket Cloud Storage. -
Nella sezione
OAuth2 configuration, imposta i valori di[GOOGLE_OAUTH2_CLIENT_ID]e[GOOGLE_OAUTH2_CLIENT_SECRET]sull'ID client e sul segreto dell'applicazione che hai creato in precedenza. -
Salva e chiudi il file
config.py.
Se utilizzi Cloud SQL:
-
Apri il file
app.yamlper modificarlo. -
Imposta il valore di
cloudsql-instancesullo stesso valore utilizzato per[CLOUDSQL_CONNECTION_NAME]nel fileconfig.py. Utilizza il formatoproject:region:cloudsql-instance. Rimuovi il commento dall'intera riga. -
Salva e chiudi il file
app.yaml.
Installazione delle dipendenze
Per creare un ambiente virtuale e installare le dipendenze, utilizza i seguenti comandi:
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 nel computer locale
Avvia un server web locale:
python main.pyNel browser, inserisci il seguente indirizzo:
http://localhost:8080
Premi Ctrl+C per uscire dal worker e poi dal server web locale.
Distribuzione dell'applicazione nell'ambiente flessibile di App Engine
Distribuisci l'applicazione di esempio:
gcloud app deployNel browser, inserisci il seguente URL:
https://PROJECT_ID.REGION_ID.r.appspot.comSostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google CloudREGION_ID: un codice assegnato da App Engine alla tua app
Se aggiorni l'app, esegui il deployment della versione aggiornata inserendo lo stesso comando che hai utilizzato per eseguire il deployment dell'app. Il deployment crea una nuova versione dell'app e la promuove alla versione predefinita. Le versioni precedenti della tua app rimangono, così come le istanze di macchine virtuali (VM) associate. Tutte queste versioni dell'app e istanze VM sono risorse fatturabili. Per ridurre i costi, elimina le versioni non predefinite della tua 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 saperne di più sulla pulizia delle risorse fatturabili, consulta la sezione Pulizia nell'ultimo passaggio di questo tutorial.
Simulare un errore
Per vedere Error Reporting in azione, introduci intenzionalmente un errore nel codice e poi cerca l'eccezione nella pagina Error Reporting della console Google Cloud .
In
bookshelf/crud.py, aggiungi un'operazione che accede a una variabile non definita e genera unReferenceErrornella visualizzazione dell'indice.@crud.route("/") def list(): x[3]
Esegui il deployment dell'app.
gcloud app deploy
Accedi alla pagina dell'indice.
gcloud app browse
Puoi visualizzare il messaggio
An internal error occurred.-
Nella console Google Cloud , vai alla pagina Error Reporting:
Puoi trovare questa pagina anche utilizzando la barra di ricerca.
Puoi vedere l'errore elencato.
Fai clic sull'errore per visualizzare informazioni al riguardo, ad esempio l'ultima volta in cui è stato rilevato, il numero di volte in cui si è verificato, un istogramma dei tempi di occorrenza e l'analisi dello stack.
Nozioni di base sul codice
Per segnalare le eccezioni non rilevate, il codice utilizza prima il decoratore 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 dello stack e utilizza una funzione helper per estrarre i dettagli della richiesta pertinenti dalla richiesta Flask, che compila Error Reporting con le tracce 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 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.