Utilizar el servidor de desarrollo local

La CLI de Google Cloud incluye un servidor de desarrollo local (dev_appserver.py). Puedes usar el servidor de desarrollo local para simular la ejecución de tu aplicación de App Engine en producción, así como para acceder a los servicios empaquetados antiguos de App Engine. El entorno simulado aplica algunas restricciones del espacio aislado, como las funciones del sistema restringidas y las importaciones de módulos de lenguaje de tiempo de ejecución, pero no otras, como los tiempos de espera o las cuotas de las solicitudes.

El servidor de desarrollo local también simula los servicios proporcionados por las bibliotecas del SDK de App Engine, como Datastore, Memcache y Task Queues, realizando sus tareas de forma local. Cuando tu aplicación se ejecuta en el servidor de desarrollo, puedes seguir haciendo llamadas a APIs remotas a la infraestructura de producción mediante los endpoints HTTP de las APIs de Google.

Configurar el servidor de desarrollo local

Para ejecutar la herramienta del servidor de desarrollo local, debe configurar lo siguiente:

  1. Verifica que has instalado un intérprete de Python 3 que sea compatible con la versión de Python que requiere gcloud CLI.
  2. Verifica que has instalado el componente de Google Cloud CLI que incluye la extensión de App Engine para Python 3 (app-engine-python):

    gcloud components list
    

    Si el componente app-engine-python no está instalado, ejecuta el siguiente comando:

    gcloud components install app-engine-python
    
  3. Busca la ruta de instalación del SDK de Google Cloud ejecutando el siguiente comando:

    gcloud info
    

    El comando devuelve el directorio raíz en el que has instalado el SDK de Google Cloud. Por ejemplo:

    Installation Root: [/Users/myname/google-cloud-sdk]

  4. Localiza la herramienta dev_appserver.py en la carpeta /bin/ donde hayas instalado Google Cloud CLI. Por ejemplo:

    CLOUD_SDK_ROOT/bin/dev_appserver.py
    
  5. Anota la ruta de dev_appserver.py para más adelante.

Ejecutar el servidor de desarrollo local

Después de configurar el servidor de desarrollo local y crear el archivo de configuración app.yaml de tu aplicación, puedes usar el comando dev_appserver.py para ejecutarla de forma local.

Para iniciar el servidor de desarrollo local, sigue estos pasos:

  1. En el directorio que contiene el archivo de configuración app.yaml, ejecuta el comando dev_appserver.py.

    dev_appserver.py

    Especifica la ruta del directorio de tu aplicación. Por ejemplo:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py PATH_TO_YOUR_APP
    

    También puedes especificar el archivo de configuración de un servicio concreto, por ejemplo:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py app.yaml
    

    Para cambiar el puerto, incluye la opción --port:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --port=9999 PATH_TO_YOUR_APP
    

    goapp serve

    El comando goapp serve se incluye en el SDK de App Engine para Go original y encapsula la herramienta de Python dev_appserver.py subyacente. Para iniciar el servidor de desarrollo local, ejecuta el siguiente comando:

       goapp serve
    

  2. El servidor de desarrollo local ya está en funcionamiento y a la espera de solicitudes. Puedes visitar http://localhost:8080/ en tu navegador web para ver la aplicación en acción.

    Si has especificado un puerto personalizado con la opción --port, recuerda abrir tu navegador en ese puerto.

Para detener el servidor local desde la línea de comandos, pulsa lo siguiente:

  • macOS o Linux: Control+C
  • Windows: Control + Inter

Especificar IDs de aplicación

Para acceder a tu ID de aplicación en el servidor local (por ejemplo, para suplantar una dirección de correo electrónico), usa la función appengine.AppID.

Para obtener el nombre de host de la aplicación en ejecución, usa la función appengine.DefaultVersionHostname.

Detectar el entorno de tiempo de ejecución de la aplicación

Para determinar si tu código se está ejecutando en producción o en el servidor de desarrollo local, puedes llamar al método IsDevAppServer(). Si el valor es true, el código se ejecuta en el entorno de desarrollo local. De lo contrario, se ejecuta en producción.

Consulta GitHub para ver un ejemplo.

Usar el servicio Datastore local

El servidor de desarrollo local simula Datastore de App Engine mediante un archivo local que se conserva entre las invocaciones del servidor local.

Para obtener más información sobre los índices y index.yaml, consulta las páginas Índices de Datastore y Configuración de índices de Datastore.

Consultar el Datastore local { :#browse}

Si tu aplicación ha escrito datos en tu Datastore local mediante el servidor de desarrollo local, puedes consultarlos en la consola de desarrollo local.

Para consultar el almacén de datos local, sigue estos pasos:

  1. Inicia el servidor de desarrollo.

  2. Accede a Datastore Viewer en la consola de desarrollo local. La URL es http://localhost:8000/datastore.

  3. Ver el contenido de tu almacén de datos local.

Especificar la política de asignación de IDs

En el caso de las aplicaciones de producción de App Engine, puedes configurar Datastore para que genere automáticamente los IDs de las entidades.

Aunque las políticas de asignación automática de IDs del servidor de producción son completamente diferentes de las que usa el servidor de desarrollo, también puedes definir la política de asignación automática de IDs del servidor local.

Para especificar la política de asignación automática de IDs, usa la opción --auto_id_policy:

  python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --auto_id_policy=sequential

donde --auto_id_policy puede ser uno de los siguientes valores:

  • scattered: (valor predeterminado) los IDs se asignan a partir de una secuencia no repetida de números enteros distribuidos de forma aproximadamente uniforme.
  • sequential: los IDs se asignan a partir de la secuencia de números enteros consecutivos.

Borra el almacén de datos local { :#clear_local_datastore}

Para borrar el almacén de datos local de una aplicación, invoca el servidor de desarrollo local de la siguiente manera:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --clear_datastore=yes app.yaml

Cambiar la ubicación local de Datastore { :#change_datastore_location}

Para cambiar la ubicación que se usa para el archivo Datastore, usa la opción --datastore_path:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml

Usar el servicio de correo

El servidor de desarrollo local puede enviar correos en las llamadas al servicio de correo de App Engine mediante un servidor SMTP o una instalación local de Sendmail.

Usar SMTP

Para habilitar la compatibilidad con el correo mediante un servidor SMTP, invoca dev_appserver.py de la siguiente manera::

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

donde se definen las opciones --smtp_host, --smtp_port, --smtp_user y --smtp_password con tus propios valores.

Usar Sendmail

Para habilitar la asistencia de correo con Sendmail, invoca dev_appserver.py de la siguiente manera:

python3 [CLOUD_SDK_ROOT]/bin/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

El servidor local usa el comando sendmail para enviar mensajes de correo con la configuración predeterminada de tu instalación.

Usar el servicio de obtención de URLs

Cuando tu aplicación usa la API de obtención de URLs para hacer una solicitud HTTP, el servidor de desarrollo local hace la solicitud directamente desde tu ordenador. El comportamiento de la obtención de URLs en el servidor local puede ser diferente del de App Engine en producción si usas un servidor proxy para acceder a sitios web.

Usar el servicio Users

App Engine proporciona un servicio de usuarios para simplificar la autenticación y la autorización de tu aplicación. El servidor de desarrollo local simula el comportamiento de las cuentas de Google con sus propias páginas de inicio y cierre de sesión.

Cuando se ejecuta en el servidor de desarrollo local, las funciones LoginURL y LogoutURL devuelven URLs de /_ah/login y /_ah/logout en el servidor local.

Argumentos de línea de comandos

Para ver las opciones de comandos del servidor de desarrollo local, consulta Opciones del servidor de desarrollo local.