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 las herramientas estándar de Python, como virtualenv
, para crear entornos aislados y pytest
a fin de ejecutar pruebas de unidades y pruebas 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 Usa el servidor de desarrollo local para obtener más información sobre las pruebas locales.
Configura la herramienta del servidor de desarrollo local
Un comando dev_appserver.py
de muestra puede verse de la siguiente manera:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES
Reemplaza lo siguiente:
- CLOUD_SDK_ROOT por la ruta al directorio raíz en el que instalaste Google Cloud CLI. El directorio predeterminado es
./google-cloud-sdk/
. - OPTION por una marca compatible con el servidor de desarrollo local.
- FILES especifica uno o más archivos
app.yaml
, uno por servicio, para el argumento posicionalyaml_path
.
Para obtener una lista completa de las opciones, ejecuta el siguiente comando:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h
Opciones comunes
Las opciones más comunes son las siguientes:
--admin_host=ADMIN_HOST
- Es el nombre de host al que se debe vincular la Consola del administrador del servidor de desarrollo local (valor predeterminado: localhost).
--admin_port=ADMIN_PORT
- Puerto al que se debe vincular la Consola del administrador del servidor de desarrollo local (valor predeterminado: 8000).
--addn_host=ADDN_HOST
- Este argumento te permite incluir valores de encabezado de host HTTP adicionales en la lista de entidades permitidas para que se pueda acceder al servidor detrás de un proxy, sin tener que inhabilitar la verificación del host (consulta
--enable_host_checking
). Los hosts adicionales que comienzan con*.
permiten todos los subdominios Por ejemplo,*.example.org
permitehost.example.org
, pero nosub.host.example.org
oexample.org
. Los hosts que comienzan con**.
permiten subdominios de cualquier profundidad. Por ejemplo,**.example.com
permitehost.example.com
ysub.host.example.com
, pero noexample.com
. (valor predeterminado: []) --allow_skipped_files=...
- Hace que la aplicación pueda leer los archivos especificados en
app.yaml
skip_files
o los controladoresstatic
(valor predeterminado: False). -A APP_ID, --application=...
- Configura la aplicación, lo que anula el valor de la aplicación desde el archivo
app.yaml
(valor predeterminado: None). --appidentity_email_address=...
- Dirección de correo electrónico asociada con una cuenta de servicio que tiene una clave descargable.
Puede ser
None
para ninguna identidad de aplicación local (valor predeterminado: None). --appidentity_private_key_path=...
- Ruta de acceso al archivo de claves privadas asociado con la cuenta de servicio (formato
.pem
). Se debe establecer siappidentity_email_address
está establecido (valor predeterminado: None). --api_host=API_HOST
- Nombre de host al que se debe vincular el servidor de API (valor predeterminado: localhost).
--api_port=API_PORT
- Puerto al que se debe vincular el servidor para llamadas a la API (valor predeterminado: 0).
--auth_domain=...
- Nombre del dominio de autorización a usar (valor predeterminado:
gmail.com
). --auto_id_policy=...
- Obsoleta. Cómo el almacén de datos local asigna ID automáticos. Las opciones son
sequential
oscattered
(valor predeterminado:scattered
). --automatic_restart=...
- Reinicia las instancias de forma automática cuando cambian los archivos que son relevantes para el módulo (valor predeterminado: True).
--blobstore_path=...
- Ruta de acceso al directorio que se usa para almacenar el contenido del BLOB (el valor predeterminado es un subdirectorio de
--storage_path
si no está configurado) (valor predeterminado: None). --clear_datastore=yes|no
- Borra los datos y archivos de historial del almacén de datos 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 módulos de entorno de ejecución personalizados. Esto es obligatorio cuando esos módulos están presentes. Incluye
{port}
en la string (sin comillas) para pasar el número de puerto como un argumento (valor predeterminado: ). Por ejemplo:--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"
--datastore_consistency_policy {consistent,random,time}
La política que se debe aplicar cuando se decide si una escritura del almacén de datos debe aparecer en consultas globales (valor predeterminado: time).
--datastore_emulator_cmd=...
La ruta de acceso a una secuencia de comandos que invoca el emulador de Cloud Datastore. Si se deja vacío,
dev_appserver
intentará encontrar el emulador del almacén de datos 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 (valor predeterminado: 0).
--datastore_path=...
La ruta que se usará para el archivo de datos del almacén de datos local. El servidor crea este archivo si no existe.
--default_gcs_bucket_name=...
Nombre predeterminado del bucket de Cloud Storage (valor predeterminado: None).
--dev_appserver_log_level {debug,info,warning,critical,error}
El nivel de registro bajo el cual los mensajes de registro generados por el servidor de desarrollo no se mostrarán en la consola (esta marca es más útil para diagnosticar problemas en
dev_appserver.py
que en el código de la aplicación) (valor predeterminado: info).--enable_host_checking=yes|no
Determina si se debe aplicar la verificación de host
HTTP
para los módulos de la aplicación, el servidor de la API y el servidor de administración. La verificación del host protege contra los ataques de revinculación de DNS, solo se inhabilita después de comprender las implicaciones de seguridad (valor predeterminado: True).--enable_console=yes|no
Habilita la consola interactiva en la vista de administrador (valor predeterminado: False).
--enable_sendmail=yes|no
Usa la instalación de
Sendmail
de la computadora local para enviar mensajes de correo electrónico.--enable_task_running=yes|no
Permite que el servidor de desarrollo ejecute tareas de aplicaciones en cola (valor predeterminado:
yes
). Si especificasno
, el servidor no ejecutará tareas de aplicaciones en cola.--env_var=...
Variable de entorno definida por el usuario para el proceso del entorno de ejecución local. Cada
env_var
tiene el formato dekey=value
, y puedes definir múltiples variables de entorno. Además deenv_variables
enapp.yaml
, esta marca permite establecer variables de entorno adicionales para 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).--help
Imprime un mensaje útil y se cierra.
--host=...
La dirección del host que se usará para el servidor. Es posible que debas configurarlo para poder acceder al servidor de desarrollo desde otra computadora de tu red. Una dirección
0.0.0.0
permite el acceso por localhost y el acceso por IP o 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 emitirán los mensajes del nivel de registro especificado o superior. Los valores posibles son
debug
,info
,warning
,error
ycritical
.--logs_path=...
De forma predeterminada, los registros para el 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 sigan disponibles luego de diversos reinicios del servidor. Debes especificar la ruta y el nombre del directorio para un archivo de base de datos SQLite. Se crea un archivo de base de datos SQLite con el nombre especificado si el archivo aún no existe.
Por ejemplo:
--logs_path=/home/logs/boglogs.db
.--max_module_instances=...
La cantidad máxima de instancias del entorno 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 están limitados a la cantidad de instancias o a una lista de
module:max_instances
separada por comas (valor predeterminado: None). Por ejemplo:default:5,backend:3
--mysql_host=MYSQL_HOST
Nombre de host de un servidor MySQL en ejecución para el almacenamiento simulado de Cloud SQL (valor predeterminado: localhost)
--mysql_port=MYSQL_PORT
Nú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_USER
Nombre de usuario usado cuando se conecta al servidor MySQL especificado en
--mysql_host
y--mysql_port
o--mysql_socket
(valor predeterminado: ).--mysql_password=MYSQL_PASSWORD
Contraseña usada cuando se conecta al servidor MySQL especificado en
--mysql_host
y--mysql_port
o--mysql_socket
(valor predeterminado: ).--mysql_socket=MYSQL_SOCKET
La ruta de acceso a un archivo de socket Unix para usar cuando te conectas a un servidor MySQL en ejecución utilizado para almacenamiento simulado de Cloud SQL (valor predeterminado: None).
--port=...
El número de puerto que se usará para el servidor. El valor predeterminado es
8080
. Si se inician varios servidores, por ejemplo, para servicios, se les asignarán puertos subsiguientes, como8081
y8082
.--require_indexes=yes|no
Inhabilita la generación automática de entradas en el archivo
index.yaml
. En su lugar, cuando la aplicación realiza una consulta que requiere que su índice se defina en el archivo, pero no se encuentra esta definición, se generará una excepción. Esto es similar a lo que sucedería si se ejecutara en App Engine (predeterminado:no
).--runtime=...
Especifica los entornos de ejecución predeterminados que te gustaría usar. Para obtener la lista de entornos de ejecución compatibles, consulta el Programa de asistencia del entorno de ejecución.
--running_datastore_emulator_host=...
Anula la variable de entorno DATASTORE_EMULATOR_HOST, que significa el
hostname:port
de un emulador de Cloud Datastore en ejecución al que se puede conectardev_appserver
(valor predeterminado: None).--search_indexes_path=...
La ruta de acceso a un archivo que se usa para almacenar índices de búsqueda (se establece de forma predeterminada en un archivo en
--storage_path
si no está configurado) (valor predeterminado:None).--skip_sdk_update_check=...
Omite la búsqueda de actualizaciones del SDK (si es falso, usa
.appcfg_nag
para decidir) (valor predeterminado: False).--show_mail_body=...
Registra el contenido de los correos electrónicos enviados mediante la API de correo electrónico (valor predeterminado: False).
--smtp_allow_tls...
Permite que se use TLS cuando el servidor SMTP anuncia compatibilidad con TLS (se ignora si --smtp_host no está configurado) (valor predeterminado: True).
--smtp_host=...
El nombre de host del servidor SMTP que se usará para enviar mensajes de correo electrónico.
--smtp_port=...
El número de puerto del servidor SMTP que se usará para enviar mensajes de correo electrónico.
--smtp_user=...
El nombre de usuario que se usará con el servidor SMTP para enviar mensajes de correo electrónico.
--smtp_password=...
La contraseña que se usará con el servidor SMTP para enviar mensajes de correo electrónico.
--storage_path=...
La ruta de acceso en la que se almacenarán todos los archivos locales, como los archivos y registros de Datastore, Blobstore y Cloud Storage, a menos que se anulen mediante
--datastore_path
,--blobstore_path
o--logs_path
.--support_datastore_emulator=yes|no
Usa el emulador (Beta) de Cloud Datastore para la emulación del almacén de datos local.
--ssl_certificate_path=...
Ruta de acceso al certificado SSL. También debe proporcionar
--ssl_certificate_key_path
si se utiliza esta opción (valor predeterminado: None).--ssl_certificate_key_path=...
Ruta de acceso a la clave privada SSL correspondiente. También debe proporcionar
--ssl_certificate_path
si se utiliza esta opción (valor predeterminado: None).--threadsafe_override=...
Anula la configuración de seguridad de hilos de la aplicación. El valor puede ser un booleano, en cuyo caso se anulará toda la configuración de seguridad de hilos de los módulos o una lista de
module:threadsafe_override
separada 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 de una máquina remota con un sistema de archivos distribuido (valor predeterminado: False).
--watcher_ignore_re=...
String de regex para especificar los archivos que el agente de observación de archivos ignorará. (valor predeterminado: None)
Opciones de comando específicas del entorno de ejecución de Python:
--python_startup_script
- La secuencia de comandos que se debe ejecutar durante el inicio de las instancias nuevas de entorno de ejecución de Python (útil para herramientas como depuradores) (valor predeterminado: None).
--python_startup_args
- Los argumentos disponibles para la secuencia de comandos especificada en
python_startup_script
(valor predeterminado: None). --python27_executable_path=...
- La ruta de acceso al archivo ejecutable de python27 para las instancias del entorno de ejecución de python27 (predeterminada: None).
--python_virtualenv_path
- Es la ruta de acceso al directorio que se usa para configurar un entorno virtual de Python 3 para el entorno de ejecución de devappserver local para aplicaciones de Python 3. Si la ruta de acceso no existe, se creará el directorio, pero no se limpiará 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 a tu objeto binario de Python. Para ejecutar una app de Python en
dev_appserver
, especifica esta marca.