De nombreuses applications requièrent une fonctionnalité de gestion de session pour l'authentification et le stockage des préférences utilisateur. Le framework Flask intègre une mise en œuvre basée sur la mémoire pour assurer cette gestion. Cette mise en œuvre n'est toutefois pas adaptée à une application pouvant être diffusée depuis plusieurs instances. En effet, la session enregistrée dans une instance peut différer des autres instances. Ce tutoriel explique comment gérer des sessions sur App Engine.
Objectifs
- Écrire l'application
- Exécuter l'application en local
- Déployer l'application sur App Engine
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Pour obtenir une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Installez Python,
pipetvirtualenvsur votre système. Pour obtenir des instructions, consultez Configurer un environnement de développement Python pour Google Cloud.
Mettre en place le projet
Dans votre fenêtre de terminal, accédez au répertoire de votre choix et créez-y un répertoire nommé
sessions. L'ensemble du code de ce tutoriel se base sur une exécution dans le répertoiresessions.Accédez donc à ce répertoire
sessions:cd sessionsCréez
requirements.txtavec le contenu suivant :Installez les dépendances :
pip install -r requirements.txt
À la fin de ce tutoriel, la structure de fichiers finale ressemble à ce qui suit :
sessions
├── app.yaml
├── main.py
└── requirements.txt
Écrire l'application Web
L'application affiche des messages d'accueil dans différentes langues pour chaque utilisateur. Les utilisateurs connus reçoivent toujours les messages d'accueil dans la même langue.

Pour que votre application puisse stocker les préférences d'un utilisateur, vous devez mettre en œuvre une méthode permettant de stocker les informations sur l'utilisateur actuel dans une session. Cet exemple d'application utilise des cookies et Firestore pour stocker les données de session.
Dans votre fenêtre de terminal, créez un fichier nommé
main.pycontenant le code suivant :Le schéma suivant décrit la façon dont Firestore gère les sessions pour l'application App Engine.
Supprimer des sessions
Vous pouvez supprimer les données de session ou mettre en œuvre une stratégie de suppression automatique. Si vous utilisez des solutions de stockage pour des sessions telles que Memcache ou Redis, les sessions expirées sont automatiquement supprimées.
Exécution locale
Dans la fenêtre de terminal, installez le serveur HTTP Gunicorn :
pip install gunicornExécutez le serveur HTTP Gunicorn :
gunicorn -b :8080 main:appAffichez l'application dans votre navigateur Web :
Cloud Shell
Dans la barre d'outils Cloud Shell, cliquez sur Aperçu sur le Web
et sélectionnez Prévisualiser sur le port 8080.Machine locale
Dans votre navigateur, accédez à
http://localhost:8080L'un des cinq messages d'accueil suivants s'affiche : "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo". La langue change si vous ouvrez la page dans un autre navigateur ou en mode navigation privée. Vous pouvez consulter et modifier les données de session dans la consoleGoogle Cloud .

Dans votre fenêtre de terminal, appuyez sur
Control+Cpour arrêter le serveur HTTP.
Déployer et exécuter l'application sur App Engine
Vous pouvez utiliser l'environnement standard App Engine pour créer et déployer une application qui s'exécute de manière fiable, même lorsqu'elle est soumise à une charge importante et doit gérer de grandes quantités de données.
Dans ce tutoriel, le serveur est déployé dans l'environnement standard App Engine.
Dans votre fenêtre de terminal, créez un fichier
app.yamlet copiez le contenu suivant :Déployez l'application sur App Engine :
gcloud app deployAffichez l'application en direct à l'adresse
https://your-project-id.appspot.com:gcloud app browseoù your-project-id correspond à l'ID de votre projet Google Cloud .
Le message d'accueil est désormais diffusé par un serveur Web exécuté sur une instance App Engine.
Déboguer l'application
Si vous ne parvenez pas à vous connecter à votre application App Engine, vérifiez les éléments suivants :
- Vérifiez que les commandes de déploiement
gcloudont bien abouti et n'ont généré aucune erreur. Si des erreurs se sont produites (par exemple,message=Build failed), corrigez-les, puis essayez de redéployer l'application App Engine. Dans la console Google Cloud , accédez à la page Explorateur de journaux.
Accéder à la page "Explorateur de journaux"
Dans la liste déroulante Ressources sélectionnées récemment, cliquez sur Application App Engine, puis sur Tous les ID de module. La liste des requêtes correspondant à votre accès à l'application s'affiche. Si cette liste n'apparaît pas, vérifiez que vous avez bien sélectionné Tous les ID de module dans la liste déroulante. Si des messages d'erreur s'affichent dans la console Google Cloud , vérifiez que le code de votre application correspond au code décrit dans la section sur l'écriture de l'application Web.
Assurez-vous que l'API Firestore est activée.
Effectuer un nettoyage
Supprimer le projet
- Dans la console Google Cloud , accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer l'instance App Engine
- Dans la console Google Cloud , accédez à la page Versions pour App Engine.
- Cochez la case correspondant à la version de l'application autre que celle par défaut que vous souhaitez supprimer.
- Pour supprimer la version de l'application, cliquez sur Supprimer.
Étapes suivantes
- Découvrez d'autres tutoriels Cloud Run Functions.
- Obtenez plus d'informations sur App Engine.
- Essayez Cloud Run, qui vous permet d'exécuter des conteneurs sans état dans un environnement entièrement géré ou dans votre propre cluster Google Kubernetes Engine.