Ce tutoriel explique comment signaler et suivre les exceptions non détectées dans l'application Python Python à l'aide de Google Cloud Console.
Error Reporting fournit un tableau de bord centralisé indiquant le nombre de chaque erreur unique, les traces de pile et un historique des événements. Vous pouvez également configurer une alerte en cas d'erreurs.
Ce tutoriel comporte plusieurs pages. Pour le suivre depuis le début et consulter les instructions relatives à la configuration, accédez à la page Application Bookshelf pour Python.
Configurer les paramètres
Cette section utilise le code du répertoire 5-logging
. Modifiez les fichiers et exécutez les commandes dans ce répertoire.
-
Ouvrez le fichier
config.py
pour le modifier et remplacez les valeurs suivantes: -
Définissez la valeur de
[PROJECT_ID]
sur votre ID de projet, visible dans Cloud Console. -
Définissez la valeur de
[DATA_BACKEND]
sur la même valeur que celle utilisée dans le tutoriel Utiliser des données structurées. -
Si vous utilisez Cloud SQL ou MongoDB, définissez les valeurs de la section
Cloud SQL
ouMongo
sur celles que vous avez utilisées à l'étape Utiliser des données structurées. -
Définissez la valeur de
[CLOUD_STORAGE_BUCKET]
sur le nom de votre bucket Cloud Storage. -
Dans la section
OAuth2 configuration
, définissez les valeurs[GOOGLE_OAUTH2_CLIENT_ID]
et[GOOGLE_OAUTH2_CLIENT_SECRET]
sur l'ID client d'application et le secret que vous avez créés précédemment. -
Enregistrez et fermez le fichier
config.py
.
Si vous utilisez Cloud SQL :
-
Ouvrez le fichier
app.yaml
pour le modifier. -
Définissez la valeur
cloudsql-instance
sur la valeur utilisée pour[CLOUDSQL_CONNECTION_NAME]
dans le fichierconfig.py
. Utiliser le formatproject:region:cloudsql-instance
. Annulez la mise en commentaire de toute la ligne. -
Enregistrez et fermez le fichier
app.yaml
.
Installer les dépendances
Pour créer un environnement virtuel et installer des dépendances, utilisez les commandes suivantes :
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
Exécuter l'application sur votre machine locale
Démarrez un serveur Web local :
python main.py
Dans votre navigateur, saisissez l'adresse suivante :
http://localhost:8080
Appuyez sur les touches Ctrl+C pour quitter le nœud de travail puis le serveur Web local.
Déployer l'application dans l'environnement flexible App Engine
Déployez l'exemple d'application :
gcloud app deploy
Dans votre navigateur Web, saisissez l'URL suivante :
https://PROJECT_ID.REGION_ID.r.appspot.com
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet Google Cloud.REGION_ID
: code attribué par App Engine à votre application
Si vous mettez à jour votre application, vous déployez la version à jour en saisissant la même commande que celle utilisée pour le premier déploiement. Le nouveau déploiement crée une version de votre application, qui est alors définie comme version par défaut. Les anciennes versions de votre application sont conservées, tout comme les instances de machine virtuelle (VM) associées. Toutes ces versions d'applications et instances de VM sont des ressources facturables. Pour réduire les coûts, supprimez les versions autres que celles par défaut de votre application.
Pour supprimer une version d'application :
- 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.
- Pour supprimer la version de l'application, cliquez sur Supprimer.
Pour en savoir plus sur le nettoyage des ressources facturables, consultez la section Nettoyer à la dernière étape de ce tutoriel.
Simuler une erreur
Pour voir Error Reporting en action, introduisez intentionnellement une erreur dans votre code, puis recherchez l'exception sur la page "Error Reporting" de Cloud Console.
Dans
bookshelf/crud.py
, ajoutez une opération qui accède à une variable non définie et renverra une erreurReferenceError
dans la vue d'index.@crud.route("/") def list(): x[3]
Déployez l'application.
gcloud app deploy
Accédez à la page d'index.
gcloud app browse
Vous pouvez afficher le message
An internal error occurred
.Dans Cloud Console, accédez à la page Error Reporting de Stackdriver.
L'erreur s'affiche.
Cliquez sur l'erreur pour afficher des informations la concernant, telles que la date de dernière occurrence, le nombre de fois où l'erreur s'est produite, l'histogramme des heures d'occurrence et la trace de la pile.
Comprendre le code
Pour consigner les exceptions non interceptées, le code utilise le décorateur Flask errorhandler
, puis signale l'exception à Error Reporting à l'aide des bibliothèques clientes Cloud pour Python.
Le client ajoute automatiquement les informations de trace et utilise une fonction d'aide pour extraire les détails pertinents de la requête Flask qui insère dans Error Reporting les traces de pile et les contextes HTTP pertinents pour toute exception InternalServerError
HTTP 500
non interceptée dans votre application.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- 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.