Le serveur de développement local (dev_appserver.py
) fait partie des composants App Engine de gcloud CLI. Cet article fournit des informations avancées sur l'utilisation de dev_appserver.py
.
Plutôt que d'employer dev_appserver
, le serveur de développement local fourni avec le SDK Google Cloud, nous vous recommandons d'utiliser des outils Python standards, tels que virtualenv
pour la création d'environnements isolés et pytest
pour l'exécution de tests unitaires et d'intégration.
Pour en savoir plus sur les tests en local, consultez la section Utiliser le serveur de développement local.
Configurer l'outil de serveur de développement local
Voici un exemple de commande dev_appserver.py
:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES
Remplacez les éléments suivants :
- CLOUD_SDK_ROOT par le chemin d'accès au répertoire racine dans lequel vous avez installé Google Cloud CLI. Le répertoire par défaut est
./google-cloud-sdk/
. - OPTION par une option compatible avec le serveur de développement local.
- FILES par un ou plusieurs fichiers
app.yaml
, un par service, pour l'argument positionnelyaml_path
.
Pour obtenir la liste complète des options, exécutez la commande suivante :
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h
Options courantes
Les options les plus courantes sont les suivantes :
--admin_host=ADMIN_HOST
- Nom d'hôte auquel la console d'administration du serveur de développement local doit être liée (par défaut : localhost).
--admin_port=ADMIN_PORT
- Port auquel la console d'administration du serveur de développement local doit être liée (par défaut : 8000).
--addn_host=ADDN_HOST
- Cet argument vous permet d'ajouter des valeurs d'en-tête d'hôte HTTP supplémentaires à la liste d'autorisation, de sorte que le serveur puisse être accessible derrière un proxy, sans avoir à désactiver la vérification d'hôte (voir
--enable_host_checking
). Les hôtes supplémentaires commençant par*.
autorisent tous les sous-domaines. Par exemple,*.example.org
autorisehost.example.org
, mais passub.host.example.org
ouexample.org
. Les hôtes commençant par**.
autorisent les sous-domaines de n'importe quelle profondeur. Par exemple,**.example.com
autorisehost.example.com
etsub.host.example.com
, mais pasexample.com
. (par défaut : []) --allow_skipped_files=...
- Rend lisibles par l'application les fichiers spécifiés dans les fichiers
app.yaml
skip_files
ou les poignéesstatic
(par défaut : "False"). -A APP_ID, --application=...
- Définit l'application en ignorant la valeur de l'application du fichier
app.yaml
(par défaut : aucune). --appidentity_email_address=...
- Adresse e-mail associée à un compte de service disposant d'une clé téléchargeable.
Peut être
None
si aucune identité d'application locale n'est définie (par défaut : aucune). --appidentity_private_key_path=...
- Chemin d'accès au fichier de clé privée associé au compte de service (format
.pem
). Doit être défini siappidentity_email_address
est défini (par défaut : aucun). --api_host=API_HOST
- Nom d'hôte auquel le serveur d'API doit être lié (par défaut : localhost).
--api_port=API_PORT
- Port auquel le serveur des appels d'API doit être lié (par défaut : 0).
--auth_domain=...
- Nom du domaine d'autorisation à utiliser (par défaut :
gmail.com
). --auto_id_policy=...
- Obsolète. Manière dont le datastore local attribue les identifiants automatiques. Les options sont
sequential
ouscattered
(par défaut :scattered
). --automatic_restart=...
- Redémarre automatiquement les instances lorsque des fichiers pertinents pour leur module sont modifiés (par défaut : "True").
--blobstore_path=...
- Chemin d'accès au répertoire utilisé pour stocker le contenu d'un blob (correspond par défaut à un sous-répertoire de
--storage_path
si cette option n'est pas définie) (par défaut : aucun). --clear_datastore=yes|no
- Efface les fichiers d'historique et les données du datastore avant de démarrer le serveur Web (par défaut :
no
). --clear_search_indexes...
- Efface les index de recherche (par défaut : "False").
--custom_entrypoint=...
Spécifie un point d'entrée pour les modules d'exécution personnalisés. Cette action est obligatoire lorsque de tels modules sont présents. Incluez
{port}
dans la chaîne pour transmettre le numéro de port en tant qu'argument (par défaut : ). Exemple :--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"
--datastore_consistency_policy {consistent,random,time}
Règle à appliquer lorsque vous décidez si une écriture du datastore doit apparaître dans les requêtes globales (par défaut : "time").
--datastore_emulator_cmd=...
Chemin d'accès à un script qui appelle l'émulateur Cloud Datastore. Si cette option n'est pas renseignée,
dev_appserver
essaie de trouver l'émulateur Datastore dans Google Cloud SDK (par défaut : aucun).--datastore_emulator_port=...
Numéro de port sur lequel dev_appserver doit lancer l'émulateur Cloud Datastore (par défaut : 0).
--datastore_path=...
Chemin d'accès à utiliser pour le fichier de données du datastore local. S'il n'existe pas, le serveur crée ce fichier.
--default_gcs_bucket_name=...
Nom du bucket Cloud Storage par défaut (par défaut : aucun).
--dev_appserver_log_level {debug,info,warning,critical,error}
Niveau de journalisation en dessous duquel les messages de journalisation générés par le serveur de développement ne seront pas affichés sur la console (cette option est plus utile pour diagnostiquer les problèmes dans
dev_appserver.py
plutôt que dans le code de l'application) (par défaut : info).--enable_host_checking=yes|no
Détermine s'il faut appliquer la vérification d'hôte
HTTP
pour les modules d'application, le serveur d'API et le serveur d'administration. La vérification d'hôte offre une protection contre les attaques de réattribution DNS. Désactivez-la seulement après avoir compris les implications en matière de sécurité (par défaut : "True").--enable_console=yes|no
Active la console interactive dans la vue d'administration (par défaut : "False").
--enable_sendmail=yes|no
Utilise l'installation
Sendmail
de l'ordinateur local pour envoyer des e-mails.--enable_task_running=yes|no
Permet au serveur de développement d'exécuter des tâches d'envoi (par défaut :
yes
). Si vous spécifiezno
, le serveur n'exécute pas de tâches d'envoi.--env_var=...
Variable d'environnement définie par l'utilisateur pour le processus d'exécution local. Chaque
env_var
est au formatkey=value
, et vous pouvez définir plusieurs variables d'environnement. En plus deenv_variables
dans le fichierapp.yaml
, cette option permet de définir des variables d'environnement supplémentaires pour les processus locaux.Exemple :
--env_var KEY_1=val1 --env_var KEY_2=val2
--grpc_api_port...
Port sur lequel le serveur d'API
gRPC
écoute (par défaut : 0).--help
Affiche un message utile, puis la fenêtre se ferme.
--host=...
Adresse hôte à utiliser pour le serveur. Si vous souhaitez accéder au serveur de développement à partir d'un autre ordinateur de votre réseau, nous vous recommandons de définir cette option. L'adresse
0.0.0.0
autorise les accès à partir de localhost et à partir d'un nom d'hôte ou d'une adresse IP (par défaut :localhost
).--log_level=...
Niveau de journalisation le plus bas auquel des messages de journalisation sont écrits dans la console. Les messages correspondant au niveau de journalisation spécifié ou à un niveau supérieur sont disponibles en sortie. Les valeurs possibles sont
debug
,info
,warning
,error
etcritical
.--logs_path=...
Par défaut, les journaux du serveur de développement local sont uniquement stockés en mémoire. Spécifiez cette option si vous exécutez le serveur de développement local pour stocker les journaux dans un fichier, ce qui les rend disponibles lors du redémarrage du serveur. Vous devez spécifier le chemin et le nom du répertoire dans un fichier de base de données SQLite. S'il n'en existe aucun, un fichier de base de données SQLite est créé avec le nom spécifié.
Par exemple :
--logs_path=/home/logs/boglogs.db
--max_module_instances=...
Nombre maximal d'instances d'exécution pouvant être démarrées pour un service particulier. La valeur peut être un entier. Dans ce cas, tous les modules sont limités au nombre d'instances ou à une liste d'éléments
module:max_instances
séparés par une virgule (par défaut : aucun). Exemple :default:5,backend:3
--mysql_host=MYSQL_HOST
Nom d'hôte d'un serveur MySQL en cours d'exécution utilisé pour la simulation du stockage Cloud SQL (par défaut : localhost).
--mysql_port=MYSQL_PORT
Numéro de port d'un serveur MySQL en cours d'exécution utilisé pour la simulation du stockage Cloud SQL (par défaut : 3306).
--mysql_user=MYSQL_USER
Nom d'utilisateur à employer lors de la connexion au serveur MySQL spécifié dans
--mysql_host
et--mysql_port
ou--mysql_socket
(par défaut : ).--mysql_password=MYSQL_PASSWORD
Mot de passe à utiliser lors de la connexion au serveur MySQL spécifié dans
--mysql_host
et--mysql_port
ou--mysql_socket
(par défaut : ).--mysql_socket=MYSQL_SOCKET
Chemin d'accès à un fichier de socket Unix à utiliser lors de la connexion à un serveur MySQL en cours d'exécution utilisé pour la simulation du stockage Cloud SQL (par défaut : aucun).
--port=...
Numéro de port à utiliser pour le serveur. La valeur par défaut est
8080
. Si plusieurs serveurs sont lancés (pour des services, par exemple), les ports qui suivent leur sont attribués, tels que8081
et8082
.--require_indexes=yes|no
Désactive la génération automatique des entrées dans le fichier
index.yaml
. Ainsi, lorsque l'application effectue une requête nécessitant que son index soit défini dans le fichier et que la définition d'index est introuvable, une exception est générée, comme cela se produit pour une exécution sur App Engine (par défaut :no
).--runtime=...
Spécifie les environnements d'exécution par défaut que vous souhaitez utiliser. Pour obtenir la liste des environnements d'exécution compatibles, consultez le calendrier de compatibilité des environnements d'exécution.
--running_datastore_emulator_host=...
Remplace la variable d'environnement DATASTORE_EMULATOR_HOST, qui correspond au
hostname:port
d'un émulateur Cloud Datastore en cours d'exécution auqueldev_appserver
peut se connecter (par défaut : aucun).--search_indexes_path=...
Chemin d'accès à un fichier permettant de stocker les index de recherche (correspond par défaut à un fichier dans
--storage_path
si l'option n'est pas définie) (par défaut : aucun).--skip_sdk_update_check=...
Ignore la vérification des mises à jour du SDK (si la valeur est définie sur "false", utilisez
.appcfg_nag
pour faire un choix) (par défaut : "False").--show_mail_body=...
Enregistre le contenu des e-mails envoyés à l'aide de l'API Mail (par défaut : "False").
--smtp_allow_tls...
Autorise l'utilisation de TLS lorsque le serveur SMTP annonce la compatibilité TLS (ignoré si --smtp_host n'est pas défini) (par défaut : "True").
--smtp_host=...
Nom d'hôte du serveur SMTP à utiliser pour envoyer des e-mails.
--smtp_port=...
Numéro de port du serveur SMTP à utiliser pour envoyer des e-mails.
--smtp_user=...
Nom d'utilisateur à utiliser avec le serveur SMTP pour envoyer des e-mails.
--smtp_password=...
Mot de passe à utiliser avec le serveur SMTP pour envoyer des e-mails.
--storage_path=...
Chemin d'accès à tous les fichiers locaux, tels que les journaux et les fichiers Datastore, Blobstore, Cloud Storage, sauf s'ils sont remplacés par
--datastore_path
,--blobstore_path
ou--logs_path
.--support_datastore_emulator=yes|no
Utilisez l'émulateur Cloud Datastore (beta) pour l'émulation de magasin de données local.
--ssl_certificate_path=...
Chemin d'accès au certificat SSL. Doit également fournir
--ssl_certificate_key_path
si vous utilisez cette option (par défaut : aucun).--ssl_certificate_key_path=...
Chemin d'accès à la clé privée SSL correspondante. Doit également fournir
--ssl_certificate_path
si vous utilisez cette option (par défaut : aucun).--threadsafe_override=...
Ignore la configuration "threadsafe" de l'application. Il peut s'agir d'une valeur booléenne, auquel cas les paramètres "threadsafe" de tous les modules seront ignorés. La valeur peut également correspondre à une liste d'éléments
module:threadsafe_override
séparés par une virgule (par défaut : aucun).Par exemple :
default:False,backend:True
--use_mtime_file_watcher=...
Utilise le sondage mtime afin de détecter les modifications du code source. Cette option est utile si vous modifiez du code depuis un ordinateur distant à l'aide d'un système de fichiers distribué (par défaut : "False").
--watcher_ignore_re=...
Chaîne d'expression régulière permettant de spécifier les fichiers à ignorer par le moniteur de fichiers. (par défaut : aucune)
Options de commande spécifiques à l'environnement d'exécution Python :
--python_startup_script
- Script à exécuter au démarrage de nouvelles instances d'exécution Python (utile pour des outils tels que les débogueurs) (par défaut : aucun).
--python_startup_args
- Arguments mis à la disposition du script spécifié dans
python_startup_script
(par défaut : aucun). --python27_executable_path=...
- Chemin d'accès à l'exécutable python27 pour les instances d'exécution python27 (par défaut : aucun).
--python_virtualenv_path
- Chemin d'accès au répertoire utilisé pour configurer un environnement virtuel Python 3 pour l'environnement d'exécution devappserver local pour les applications Python 3. Si le chemin d'accès n'existe pas, le répertoire est créé, mais il n'est pas nettoyé à la fin de l'exécution de devappserver, ce qui permet le mise en cache entre les appels. S'il n'est pas défini, un répertoire temporaire sera utilisé et nettoyé à la fin de l'exécution.
--runtime_python_path=...
- Chemin d'accès à votre binaire Python. Pour exécuter une application Python sur
dev_appserver
, spécifiez cette option.