Usar el servidor de desarrollo local

El SDK de Cloud y el SDK de App Engine para Python 2 incluyen un servidor de desarrollo local (dev_appserver.py) que puedes ejecutar de forma local a fin de simular la aplicación que se ejecuta en la producción de App Engine. El entorno simulado aplica algunas restricciones de zona de pruebas, como importaciones de módulos de Python y funciones del sistema restringidas, pero no otras, como tiempos de espera de solicitud o cuotas.

El servidor de desarrollo local simula los servicios que proporcionan las bibliotecas en el SDK de App Engine, incluidos Datastore, Memcache y lista de tareas en cola, cuando realizas estas tareas de forma local. Cuando tu aplicación se ejecuta en el servidor de desarrollo, puedes hacer llamadas remotas a la API para la infraestructura de producción cuando usas los extremos HTTP de la API de Google.

Ejecuta el servidor de desarrollo local

Una vez creado el archivo de configuración app.yaml para tu app, puedes iniciar el servidor de desarrollo local con el comando dev_appserver.py a fin de ejecutar la app de forma local.

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

  1. Ejecuta el comando dev_appserver.py como se indica desde el directorio que contiene el archivo de configuración app.yaml de tu app:

    Especifica la ruta del directorio a tu app, por ejemplo:

    dev_appserver.py [PATH_TO_YOUR_APP]

    Como alternativa, puedes especificar el archivo de configuración de un servicio específico, como en el ejemplo siguiente:

    dev_appserver.py app.yaml

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

    dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]

    ¿No funciona dev_appserver.py?

    Para obtener más información sobre las opciones del comando dev_appserver.py, consulta Opciones del servidor de desarrollo local.

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

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

Si deseas detener el servidor de desarrollo local desde la línea de comandos, presiona las teclas siguientes:

  • macOS o Linux: Control-C
  • Windows: Control-Break

Especifica los ID de aplicaciones

Si deseas acceder a tu ID de app en el servidor local, por ejemplo, para falsificar una dirección de correo electrónico, usa la función get_application_id(). Si deseas obtener el nombre de host de la app en ejecución, usa la función get_default_version_hostname().

Detecta el entorno de ejecución de la aplicación

Para determinar si tu código se ejecuta en producción o en el servidor de desarrollo local, puedes verificar la variable de entorno SERVER_SOFTWARE:

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

Usa Datastore local

El servidor de desarrollo local simula el almacén de datos en App Engine con un archivo local que persiste entre las invocaciones del servidor local.

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

Explora Datastore local

Si tu app escribió datos en Datastore local mediante el servidor de desarrollo local, puedes examinarlos desde Development Console de forma local.

Para explorar Datastore local, sigue estos pasos:

  1. Inicia el servidor de desarrollo.

  2. Ingresa al Visualizador de Datastore desde Development Console de forma local. La URL es http://localhost:8000/datastore.

  3. Observa el contenido de tu Datastore local.

Especifica la política de asignación de ID

Si necesitas la producción de App Engine, puedes configurar Datastore para que genere de los ID de entidad forma automática.

Aunque las políticas de asignación de ID automática que usa el servidor de producción son difieren en su totalidad con las que usa el servidor de desarrollo, también puedes establecer la política de asignación de ID automática para el servidor local.

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

dev_appserver.py --auto_id_policy=sequential

donde --auto_id_policy puede ser una de las opciones siguientes:

  • scattered: Por configuración predeterminada, los ID se asignan a partir de una secuencia no repetitiva de números enteros distribuidos de manera casi uniforme.
  • sequential: Los ID se asignan a partir de la secuencia de números enteros consecutivos.

Borra Datastore local

Si deseas borrar el almacén de datos local de una aplicación, debes invocar el servidor de desarrollo local de la manera siguiente:

dev_appserver.py --clear_datastore=yes app.yaml

Cambia la ubicación de Datastore local

Si deseas cambiar la ubicación que se usa para el archivo del almacén de datos, usa la opción --datastore_path:

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

Usa el servicio de usuarios

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 acceso y salida. Mientras se ejecuta en el servidor de desarrollo local, las funciones users.create_login_url y users.create_logout_url muestran las URL de /_ah/login y /_ah/logout en el servidor local.

Usa el correo

El servidor de desarrollo local puede enviar correos electrónicos para llamar al servicio de correo de App Engine mediante el servidor SMTP o una instalación local de Sendmail.

Usa SMTP

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

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

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

Usa Sendmail

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

dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

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

Usa la recuperación de URL

Cuando tu aplicación usa la API de recuperación de URL para realizar una solicitud HTTP, el servidor de desarrollo local realiza la solicitud directo desde tu computadora. El comportamiento de recuperación de URL en el servidor local puede diferir de la producción de App Engine si usas un servidor proxy para acceder a sitios web.

Usa la consola interactiva

La consola interactiva permite a los desarrolladores ingresar un código de Python arbitrario en un formulario web y ejecutarlo dentro del entorno de una app. Además, proporciona el mismo acceso al entorno y a los servicios de la aplicación que un archivo .py dentro de la propia aplicación.

Para usar la consola interactiva, sigue estos pasos:

  1. Inicia el servidor de desarrollo.

  2. Accede a la consola interactiva desde Development Console de forma local. La URL es http://localhost:8000/console.

  3. Ingresa cualquier código de Python que desees ejecutar en el área de texto y, luego, envía el formulario para ejecutarlo. Por ejemplo, con el código siguiente, se crea una entidad de Datastore llamada Greeting con el contenido de texto Hello:

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

Depura con PDB

Para usar el depurador PDB de Python, sigue estos pasos:

  1. Agrega esta línea a tu código:

    import pdb; pdb.set_trace();
    

    dev_appserver se interrumpirá en este punto y mostrará PDB REPL, lo que te permite depurar el código desde la línea de comandos.

  2. Si tu aplicación realiza varias solicitudes simultáneas que invocan pdb.set_trace(), varias sesiones de depuración se iniciarán al mismo tiempo y cada una enviará resultados a STDOUT. Para evitar esto, serializa las solicitudes mediante la inhabilitación de la asistencia de procesos y subprocesos múltiples dev_appserver de la manera siguiente:

    1. Inhabilita los subprocesos múltiples para lo siguiente:

      • Todos los servicios que usan la marca --threadsafe_override=false
      • Un servicio que usa la marca --threadsafe_override=<SERVICENAME>:false
      • Múltiples servicios que usan la marca --threadsafe_override=<SERVICE1NAME>:false,<SERVICE2NAME>:false
      1. Inhabilita el procesamiento múltiple para lo siguiente:
        • Todos los servicios que usan la marca --max_module_instances=1
        • Un servicio que usa la marca --max_module_instances=<SERVICENAME>:1
        • Múltiples servicios que usan la marca --max_module_instances=<SERVICE1NAME>:1,<SERVICE2NAME>:1
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Python 2