Migrer vers l'émulateur Cloud Datastore

L'émulateur Cloud Datastore fournit une émulation locale de l'environnement de production du datastore. Il est progressivement déployé en tant que datastore par défaut pour l'outil dev_appserver.

Avantages de la migration vers l'émulateur Datastore

L'émulateur Datastore peut être partagé entre les bibliothèques clientes de l'environnement standard App Engine, telles que DB et NDB, et les bibliothèques clientes Cloud Datastore.

Vous pouvez utiliser l'émulateur Datastore pour partager des données locales entre des services s'exécutant dans les environnements standard et flexible d'App Engine.

Avant de commencer

  1. Téléchargez et installez l'environnement d'exécution Java (JRE) version 11 ou ultérieure.

  2. Exécutez dev_appserver à partir du répertoire google-cloud-sdk/bin.

Choisir votre environnement d'émulation

L'émulateur Cloud Datastore est l'émulateur par défaut pour une partie des utilisateurs de dev_appserver. Si vous utilisez l'émulateur Cloud Datastore, dev_appserver affiche le message suivant :

... Using Cloud Datastore Emulator.

Vous pouvez forcer dev_appserver à utiliser l'émulateur Cloud Datastore en définissant l'option --support_datastore_emulator sur "true" lors du démarrage de dev_appserver.py :

python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --support_datastore_emulator=[true|false] app.yaml

Remplacez DEVAPPSERVER_ROOT par le chemin d'accès au dossier dans lequel vous extrayez la version archivée de devapp_server.py. Pour en savoir plus sur le téléchargement et l'utilisation de la version archivée de dev_appserver.py, consultez la page Utiliser le serveur de développement local.

Utiliser dev_appserver avec l'émulateur Datastore

Dev_appserver décide de lancer l'émulateur en fonction de la variable d'environnement DATASTORE_EMULATOR_HOST.

  • Lorsque cette variable d'environnement existe, dev_appserver communique avec un processus d'émulateur existant s'exécutant sur DATASTORE_EMULATOR_HOST.

  • Lorsque cette variable d'environnement n'existe pas, dev_appserver lance un nouveau processus d'émulateur. Vous pouvez spécifier le port de l'émulateur Datastore en définissant l'option --datastore_emulator_port au démarrage de dev_appserver.py.

Nouveaux comportements

Conversion de format de données locales

Actuellement, l'émulateur Datastore local stocke les données dans sqlite3, tandis que l'émulateur Cloud Datastore les stocke sous forme d'objets Java.

Lorsque dev_appserver est lancé avec des données sqlite3 existantes, ces données sont converties en objets Java. Les données d'origine sont sauvegardées sous un nom de fichier tel que {original-data-filename}.sqlitestub.

Emplacement du fichier de données locales

Le chemin du fichier de données locales peut être spécifié avec l'option --datastore_path.

  • Lorsque dev_appserver lance l'émulateur, l'emplacement demeure inchangé.

  • Lorsque dev_appserver utilise un émulateur Cloud Datastore existant, cet indicateur est ignoré en faveur du paramètre de l'émulateur.

Fichier index.yaml local

  • Un fichier index.yaml vide est considéré comme non valide. La syntaxe utilisée dans index.yaml est au format YAML. Ce fichier contient un seul élément de liste appelé "index".

  • Lorsque dev_appserver lance l'émulateur, le fichier index.yaml demeure dans le répertoire du projet de l'application.

  • Lorsque dev_appserver utilise un émulateur Cloud Datastore existant, le fichier index.yaml est alors géré par cet émulateur.

Les autres fonctionnalités du serveur de datastore local demeurent inchangées.

Dépannage

Obtenir la sortie de l'émulateur

Par défaut, dev_appserver exécute l'émulateur Datastore en mode silencieux. Pour afficher la sortie de l'émulateur Datastore, exécutez dev_appserver avec l'option --dev_appserver_log_level=debug.

Échec des importations gRPC

dev_appserver utilise le framework gRPC pour communiquer avec l'émulateur Cloud Datastore. gcloud CLI packages gRPC, mais la version empaquetée est incompatible avec certains systèmes d'exploitation, ce qui entraîne des erreurs d'importation.

Pour résoudre les problèmes d'importation, vous pouvez installer le framework gRPC séparément à l'aide de pip avec gcloud CLI version 219.0.0 ou ultérieure :

pip install grpcio