El servidor de desarrollo local (dev_appserver.py) forma parte de los componentes de App Engine de la CLI de gcloud. En este tema se proporciona información avanzada sobre el uso de dev_appserver.py.
Te recomendamos que uses herramientas estándar de Python, como virtualenv para crear entornos aislados y pytest para ejecutar pruebas unitarias y de integración, en lugar de depender de dev_appserver, el servidor de desarrollo local que se proporciona con el SDK de Google Cloud.
Consulta Utilizar el servidor de desarrollo local para obtener más información sobre las pruebas locales.
Configurar la herramienta de servidor de desarrollo local
Un comando dev_appserver.py de ejemplo podría tener el siguiente aspecto:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES
Haz los cambios siguientes:
- CLOUD_SDK_ROOT con la ruta al directorio raíz
donde has instalado Google Cloud CLI. El directorio predeterminado es
./google-cloud-sdk/. - OPTION con una marca compatible con el servidor de desarrollo local.
- FILES especifica uno o varios archivos
app.yaml, uno por servicio, para el argumento posicionalyaml_path.
Para ver una lista completa de opciones, ejecuta el siguiente comando:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h
Opciones comunes
Las opciones más habituales son las siguientes:
--admin_host=ADMIN_HOST- Nombre de host al que debe enlazarse la consola de administración del servidor de desarrollo local (valor predeterminado: localhost).
--admin_port=ADMIN_PORT- Puerto al que debe enlazarse la consola de administración del servidor de desarrollo local (valor predeterminado: 8000).
--addn_host=ADDN_HOST- Este argumento te permite incluir en una lista de permitidos valores adicionales del encabezado Host de HTTP, de modo que se pueda acceder al servidor a través de un proxy sin tener que inhabilitar la comprobación de hosts (consulta
--enable_host_checking). Los hosts adicionales que empiecen por*.permiten todos los subdominios. Por ejemplo,*.example.orgpermitehost.example.org, pero nosub.host.example.orgniexample.org. Los hosts que empiezan por**.permiten subdominios de cualquier profundidad. Por ejemplo,**.example.compermitehost.example.comysub.host.example.com, pero noexample.com. predeterminado: []) --allow_skipped_files=...- Hace que la aplicación pueda leer los archivos especificados en
app.yamlskip_filesostatic(valor predeterminado: False). -A APP_ID, --application=...- Define la aplicación, lo que anula el valor de la aplicación
del archivo
app.yaml(valor predeterminado: None). --appidentity_email_address=...- Dirección de correo asociada a una cuenta de servicio que tiene una clave descargable.
Puede ser
Nonesi no hay ninguna identidad de aplicación local (valor predeterminado: None). --appidentity_private_key_path=...- Ruta al archivo de clave privada asociado a la cuenta de servicio (formato
.pem). Se debe definir si se ha definidoappidentity_email_address(valor predeterminado: None). --api_host=API_HOST- Nombre de host al que debe enlazarse el servidor de la API (valor predeterminado: localhost).
--api_port=API_PORT- Puerto al que debe enlazarse el servidor de las llamadas a la API (valor predeterminado: 0).
--auth_domain=...- Nombre del dominio de autorización que se va a usar (valor predeterminado:
gmail.com). --auto_id_policy=...- Obsoleta. Cómo asigna IDs automáticos el almacén de datos local. Las opciones son
sequentialoscattered(valor predeterminado:scattered). --automatic_restart=...- Reinicia las instancias automáticamente cuando se cambien los archivos relevantes para su módulo (valor predeterminado: True).
--blobstore_path=...- Ruta del directorio que se usa para almacenar el contenido de los blobs (si no se define, se usa un subdirectorio de
--storage_path) (valor predeterminado: None). --clear_datastore=yes|no- Borra los datos del almacén de datos y los archivos del historial antes de iniciar el servidor web (valor predeterminado:
no). --clear_search_indexes...- Borra los índices de búsqueda (valor predeterminado: False).
--custom_entrypoint=...Especifica un punto de entrada para los módulos de tiempo de ejecución personalizados. Es obligatorio cuando se incluyen estos módulos. Incluye
{port}en la cadena (sin comillas) para transferir el número de puerto como argumento (el valor predeterminado es ). Por ejemplo:--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"--datastore_consistency_policy {consistent,random,time}Política que se aplica para decidir si una escritura de almacén de datos debe aparecer en las consultas globales (valor predeterminado: tiempo).
--datastore_emulator_cmd=...Ruta a una secuencia de comandos que invoca el emulador de Cloud Datastore. Si se deja vacío,
dev_appserverintentará encontrar el emulador de Datastore en el SDK de Google Cloud (valor predeterminado: None).--datastore_emulator_port=...El número de puerto en el que dev_appserver debe iniciar el emulador de Cloud Datastore (el valor predeterminado es 0).
--datastore_path=...La ruta que se debe utilizar para el archivo de datos del almacén de datos local. El servidor crea este archivo si no existe.
--default_gcs_bucket_name=...Nombre del segmento de Cloud Storage predeterminado (valor predeterminado: None).
--dev_appserver_log_level {debug,info,warning,critical,error}El nivel de registro por debajo del cual no se mostrarán en la consola los mensajes de registro generados por el servidor de desarrollo. Esta marca es más útil para diagnosticar problemas en
dev_appserver.pyque en el código de la aplicación. El valor predeterminado es "info".--enable_host_checking=yes|noDetermina si se debe aplicar la comprobación de host
HTTPpara los módulos de aplicaciones, el servidor de la API y el servidor de administración. La comprobación de hosts protege contra ataques de revinculación de DNS. Solo se debe inhabilitar después de comprender las implicaciones de seguridad (valor predeterminado: True).--enable_console=yes|noHabilita la consola interactiva en la vista de administrador (valor predeterminado: False).
--enable_sendmail=yes|noUsa la instalación de
Sendmaildel ordenador local para enviar mensajes de correo.--enable_task_running=yes|noPermite que el servidor de desarrollo ejecute tareas push (valor predeterminado:
yes). Si especificasno, el servidor no ejecutará tareas push.--env_var=...Variable de entorno definida por el usuario para el proceso de tiempo de ejecución local. Cada
env_vartiene el formatokey=valuey puedes definir varias variables de entorno. Además deenv_variablesenapp.yaml, esta marca permite definir variables de entorno adicionales para los procesos locales.Por ejemplo:
--env_var KEY_1=val1 --env_var KEY_2=val2--grpc_api_port...Puerto en el que escucha el servidor de la API
gRPC(valor predeterminado:0).--helpImprime un mensaje de ayuda y finaliza.
--host=...La dirección de host que se debe utilizar para el servidor. Es posible que tengas que configurar esta opción para poder acceder al servidor de desarrollo desde otro ordenador de tu red. La dirección
0.0.0.0permite el acceso tanto a localhost como a la IP o al nombre de host (valor predeterminado:localhost).--log_level=...El nivel de registro más bajo en el que se escribirán los mensajes de registro en la consola. Se mostrarán los mensajes que tengan el nivel de registro especificado o uno superior. Los valores posibles son
debug,info,warning,errorycritical.--logs_path=...De forma predeterminada, los registros del servidor de desarrollo local se almacenan solo en la memoria. Especifica esta opción cuando ejecutes el servidor de desarrollo local para almacenar los registros en un archivo, lo que hace que los registros estén disponibles en los reinicios del servidor. Debe especificar la ruta del directorio y el nombre de un archivo de base de datos SQLite. Se crea un archivo de base de datos SQLite con el nombre especificado si el archivo no existe.
Por ejemplo:
--logs_path=/home/logs/boglogs.db--max_module_instances=...El número máximo de instancias de tiempo de ejecución que se pueden iniciar para un módulo concreto. El valor puede ser un número entero, en cuyo caso todos los módulos se limitan al número de instancias, o una lista de
module:max_instancesseparada por comas (valor predeterminado: None). Por ejemplo:default:5,backend:3--mysql_host=MYSQL_HOSTNombre de host de un servidor MySQL en ejecución que se usa para el almacenamiento simulado de Cloud SQL (valor predeterminado: localhost).
--mysql_port=MYSQL_PORTNúmero de puerto de un servidor MySQL en ejecución que se usa para el almacenamiento simulado de Cloud SQL (valor predeterminado: 3306).
--mysql_user=MYSQL_USERNombre de usuario que se usará al conectarse al servidor MySQL especificado en
--mysql_hosty--mysql_porto--mysql_socket(valor predeterminado: ).--mysql_password=MYSQL_PASSWORDContraseña que se usará al conectarse al servidor MySQL especificado en
--mysql_hosty--mysql_porto--mysql_socket(valor predeterminado: ).--mysql_socket=MYSQL_SOCKETRuta a un archivo de socket Unix que se usará al conectarse a un servidor MySQL en ejecución que se usa para el almacenamiento simulado de Cloud SQL (valor predeterminado: None).
--port=...El número de puerto que se debe utilizar para el servidor. El valor predeterminado es
8080(ADMITE VALORES NULL). Si se inician varios servidores, como los de servicios, se les asignarán puertos posteriores, como8081y8082.--require_indexes=yes|noInhabilita la generación automática de entradas en el archivo
index.yaml. En su lugar, cuando la aplicación haga una consulta que requiera que su índice se defina en el archivo y no se encuentre la definición del índice, se generará una excepción, de forma similar a lo que ocurriría al ejecutar la aplicación en App Engine (valor predeterminado:no).--runtime=...Especifica los tiempos de ejecución predeterminados que quieras usar. Para ver la lista de tiempos de ejecución admitidos, consulta el calendario de asistencia de tiempos de ejecución.
--running_datastore_emulator_host=...Anula la variable de entorno DATASTORE_EMULATOR_HOST, lo que significa que
hostname:portde un emulador de Cloud Datastore en ejecución al quedev_appserverse puede conectar (valor predeterminado: None).--search_indexes_path=...Ruta a un archivo que se usa para almacenar índices de búsqueda (de forma predeterminada, se usa un archivo de
--storage_pathsi no se define) (valor predeterminado:None).--skip_sdk_update_check=...Omite la comprobación de actualizaciones del SDK (si es false, usa
.appcfg_nagpara decidir) (valor predeterminado: False).--show_mail_body=...Registra el contenido de los correos enviados mediante la API Mail (valor predeterminado: False).
--smtp_allow_tls...Permite usar TLS cuando el servidor SMTP anuncia la compatibilidad con TLS (se ignora si no se define --smtp_host). El valor predeterminado es True.
--smtp_host=...El nombre de host del servidor SMTP que se debe utilizar para enviar mensajes de correo electrónico.
--smtp_port=...El número de puerto del servidor SMTP que se debe utilizar para enviar mensajes de correo electrónico.
--smtp_user=...El nombre de usuario que se debe utilizar con el servidor SMTP para enviar mensajes de correo electrónico.
--smtp_password=...La contraseña que se debe utilizar con el servidor SMTP para enviar mensajes de correo electrónico.
--storage_path=...Ruta en la que se almacenarán todos los archivos locales, como Datastore, Blobstore, los archivos de Cloud Storage y los registros, a menos que se anule con
--datastore_path,--blobstore_patho--logs_path.--support_datastore_emulator=yes|noUsa el emulador de Cloud Datastore (beta) para emular el almacén de datos local.
--ssl_certificate_path=...Ruta al certificado SSL. También debe proporcionar
--ssl_certificate_key_pathsi usa esta opción (valor predeterminado: None).--ssl_certificate_key_path=...Ruta a la clave privada SSL correspondiente. También debe proporcionar
--ssl_certificate_pathsi usa esta opción (valor predeterminado: None).--threadsafe_override=...Anula la configuración de seguridad de subprocesos de la aplicación. El valor puede ser un valor booleano, en cuyo caso se anulará la configuración de seguridad de subprocesos de todos los módulos, o una lista de
module:threadsafe_overrideseparada por comas (valor predeterminado: None).Por ejemplo:
default:False,backend:True--use_mtime_file_watcher=...Usa el sondeo de mtime para detectar cambios en el código fuente. Es útil si modificas el código desde una máquina remota mediante un sistema de archivos distribuido (valor predeterminado: False).
--watcher_ignore_re=...Cadena de expresión regular para especificar los archivos que debe ignorar el observador de archivos. (predeterminado: Ninguno)
Opciones de comandos específicas del entorno de ejecución de Python:
--python_startup_script- Secuencia de comandos que se ejecuta al iniciar nuevas instancias del entorno de ejecución de Python (útil para herramientas como depuradores). El valor predeterminado es None.
--python_startup_args- Los argumentos disponibles para la secuencia de comandos especificada en
python_startup_script(valor predeterminado: None). --python27_executable_path=...- Ruta al ejecutable de Python 2.7 para las instancias del tiempo de ejecución de Python 2.7 (valor predeterminado: None).
--python_virtualenv_path- Ruta al directorio que se usa para configurar un entorno virtual de Python 3 para el entorno de ejecución de devappserver local de aplicaciones de Python 3. Si la ruta no existe, se crea el directorio, pero no se limpia al final de la ejecución de devappserver, lo que permite almacenar en caché entre invocaciones. Si no se define, se usará un directorio temporal y se limpiará al final de la ejecución.
--runtime_python_path=...- La ruta al archivo binario de Python. Para ejecutar una aplicación de Python en
dev_appserver, especifica esta marca.