Utiliser le serveur de développement local

Le SDK Cloud et le SDK App Engine pour PHP comprennent chacun un serveur de développement local que vous pouvez exécuter localement pour simuler votre application exécutée dans App Engine en production. L'environnement simulé applique certaines restrictions du mode bac à sable, telles que des fonctions système limitées et des importations de modules Python. Il s'affranchit de certaines autres restrictions, telles que celles applicables aux délais de requêtes ou aux quotas.

Le serveur de développement local simule également les services fournis par les bibliothèques du SDK pour App Engine, y compris Datastore, Memcache et les files d'attente de tâches, en effectuant leurs tâches localement. Lorsque votre application s'exécute sur le serveur de développement, vous pouvez toujours effectuer des appels d'API distants vers l'infrastructure de production à l'aide des points de terminaison HTTP des API Google.

Exécuter le serveur de développement local

Une fois le fichier de configuration app.yaml créé pour votre application, vous pouvez démarrer le serveur de développement local à l'aide de la commande dev_appserver.py pour exécuter votre application localement.

Pour démarrer le serveur de développement local, procédez comme suit :

  1. Exécutez la commande dev_appserver.py comme suit dans le répertoire contenant le fichier de configuration app.yaml de votre application :

    Spécifiez le chemin d'accès au répertoire de votre application, par exemple :

    dev_appserver.py [PATH_TO_YOUR_APP]

    Vous pouvez également spécifier le fichier de configuration d'un service spécifique, par exemple :

    dev_appserver.py app.yaml

    Pour changer le port, incluez l'option --port :

    dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]

    dev_appserver.py ne fonctionne pas ?

    Pour en savoir plus sur les options de la commande dev_appserver.py, consultez la page relative aux options du serveur de développement local.

  2. Le serveur de développement local est désormais en cours d'exécution et écoute les requêtes. Vous pouvez saisir l'adresse http://localhost:8080/ dans votre navigateur Web pour afficher une démonstration de l'application.

    Si vous avez spécifié un port personnalisé avec l'option --port, n'oubliez pas d'ouvrir votre navigateur pour ce port.

Pour arrêter le serveur local à partir de la ligne de commande, appuyez sur les touches suivantes :

  • macOS ou Linux : Ctrl+C
  • Windows : Ctrl+Pause

Spécifier des ID application

Pour accéder à l'ID de votre application sur le serveur local, par exemple pour usurper une adresse e-mail, utilisez la fonction get_application_id(). Pour obtenir le nom d'hôte de l'application en cours d'exécution, utilisez la fonction get_default_version_hostname().

Détecter l'environnement d'exécution de l'application

Pour déterminer si votre code est en cours d'exécution en production ou sur le serveur de développement local, vous pouvez vérifier la variable d'environnement SERVER_SOFTWARE :

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
  # Production
else:
  # Local development server

Utiliser le datastore local

Le serveur de développement local simule le datastore App Engine à l'aide d'un fichier local persistant entre les appels du serveur local.

Pour plus d'informations sur les index et sur le fichier index.yaml, consultez les pages Index Cloud Datastore et Configurer des index Datastore.

Parcourir le datastore local

Si votre application a écrit des données sur votre datastore local à l'aide du serveur de développement local, vous pouvez les parcourir dans la console de développement local.

Pour parcourir le datastore local, procédez comme suit :

  1. Démarrez le serveur de développement.

  2. Accédez au lecteur Datastore dans la console de développement local, dont l'URL est http://localhost:8000/datastore.

  3. Affichez le contenu du datastore local.

Spécifier la stratégie d'allocation d'ID

Pour App Engine en production, vous pouvez configurer le datastore pour qu'il génère automatiquement des ID d'entité.

Bien que les stratégies d'attribution automatique d'ID pour le serveur de production soient complètement différentes de celles utilisées par le serveur de développement, vous pouvez également définir la stratégie d'attribution automatique d'ID pour le serveur local.

Pour spécifier la stratégie d'attribution automatique d'ID, utilisez l'option --auto_id_policy :

dev_appserver.py --auto_id_policy=sequential

--auto_id_policy peut être défini sur l'une des valeurs suivantes :

  • scattered : (par défaut) les ID sont attribués à partir d'une séquence non répétitive d'entiers répartis de manière quasiment uniforme.
  • sequential : les ID sont attribués à partir de la séquence d'entiers consécutifs.

Effacer le datastore local

Pour effacer le datastore local d'une application, appelez le serveur de développement local comme suit :

dev_appserver.py --clear_datastore=yes app.yaml

Modifier l'emplacement du datastore local

Pour modifier l'emplacement utilisé pour le fichier du datastore, utilisez l'option --datastore_path :

dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml

Utiliser le service Users

App Engine fournit un service Users pour simplifier l'authentification et les autorisations de votre application. Le serveur de développement local simule le comportement des comptes Google avec ses propres pages de connexion et de déconnexion. Pendant qu'elles sont exécutées sur le serveur de développement local, les fonctions users.create_login_url et users.create_logout_url renvoient des URL pour /_ah/login et /_ah/logout sur le serveur local.

Utiliser le service Mail

Le serveur de développement local peut envoyer des e-mails pour les appels au service Mail d'App Engine à l'aide d'un serveur SMTP ou d'une installation locale de Sendmail.

Utiliser SMTP

Pour activer la compatibilité des e-mails avec un serveur SMTP, appelez dev_appserver.py comme suit :

dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

où vous définissez les options --smtp_host, --smtp_port, --smtp_user et --smtp_password avec vos propres valeurs.

Utiliser Sendmail

Pour activer la compatibilité des e-mails avec Sendmail, appelez dev_appserver.py comme suit :

dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

Le serveur local exécute la commande sendmail pour envoyer des e-mails à l'aide de la configuration par défaut de votre installation.

Utiliser le service URL Fetch

Lorsque l'application utilise l'API URL Fetch pour exécuter une requête HTTP, le serveur de développement local effectue la requête directement à partir de votre ordinateur. Si vous accédez aux sites Web via un serveur proxy, le comportement du service URL Fetch sur le serveur local peut être différent de celui d'App Engine en production.

Utiliser la console interactive

La console interactive permet aux développeurs de saisir du code Python arbitraire dans un formulaire Web et de l'exécuter dans l'environnement de leur application. Il fournit le même accès à l'environnement et aux services de l'application qu'un fichier .py à l'intérieur de l'application elle-même.

Pour utiliser la console interactive, procédez comme suit :

  1. Démarrez le serveur de développement.

  2. Accédez à la console interactive dans la console de développement local, dont l'URL est http://localhost:8000/console.

  3. Entrez le code Python de votre choix dans la zone de texte, puis envoyez le formulaire pour l'exécuter. Par exemple, le code suivant permet d'ajouter une entité Datastore appelée Greeting avec le contenu textuel Hello :

      from google.appengine.ext import ndb
      class Greeting(ndb.Model):
        content = ndb.TextProperty()
    
      e = Greeting(content="Hello")
      e.put()
    

Débogage avec PDB

Pour utiliser le débogueur PDB Python, procédez comme suit :

  1. Ajoutez la ligne suivante à votre code :

    import pdb; pdb.set_trace();
    

    dev_appserver sera rompu à ce stade et passera dans le REPL PDB, ce qui vous permettra de déboguer le code à partir de la ligne de commande.

  2. Si votre application effectue plusieurs requêtes simultanées qui appellent pdb.set_trace(), plusieurs sessions de débogage démarreront simultanément, chacune d'elles envoyant une sortie à STDOUT. Pour éviter ce problème, sérialisez vos requêtes en désactivant la compatibilité multithread et multitraitement dev_appserver comme suit :

    1. Désactivez le traitement multithread pour les éléments suivants :

      • Tous les services utilisant l'indicateur --threadsafe_override=false
      • Un service utilisant l'indicateur --threadsafe_override=<SERVICENAME>:false
      • Plusieurs services utilisant l'indicateur --threadsafe_override=<SERVICE1NAME>:false,<SERVICE2NAME>:false
    2. Désactivez le multitraitement pour les éléments suivants :

      • Tous les services utilisant l'indicateur --max_module_instances=1
      • Un service utilisant l'indicateur --max_module_instances=<SERVICENAME>:1
      • Plusieurs services utilisant l'indicateur --max_module_instances=<SERVICE1NAME>:1,<SERVICE2NAME>:1
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python