Crea un servidor web

Debes definir un servidor web que use las API que creaste. Los marcos de trabajo de Cloud Endpoints para Python enrutan las solicitudes a tu API hacia los métodos en tu código mediante la implementación de la Interfaz de puerta de enlace del servidor web (WSGI) estándar.

Como ocurre con todas las aplicaciones que se ejecutan en App Engine, debes crear un archivo llamado app.yaml en el que establezcas la configuración de tu aplicación de App Engine. Para definir el servidor web, realiza los cambios que se describen a continuación a tu archivo app.yaml.

Para definir un servidor web:

  1. Crea un módulo de Python, por ejemplo, main.py, y un objeto endpoints.api_server en el nivel superior:

    api = endpoints.api_server([EchoApi])

    El código api = endpoints.api_server([EchoApi]) crea una aplicación WSGI que enruta las solicitudes a la API hacia los métodos de la clase EchoAPI.

    Puedes proporcionarle a endpoints.api_server una lista de objetos remote.Service (que definiste cuando creaste tu API ). Si tienes una API que se implementó en varias clases, entonces tu objeto remote.Service es una colección de clases, como se describe en Crear una API implementada con varias clases.

    La necesidad de crear un módulo separado para el objeto endpoints.api_server depende de que hayas creado una sola API o múltiples.

    • Si creaste múltiples API (con más de una subclase remote.Service) definidas en múltiples archivos, te recomendamos que crees un módulo separado para el objeto endpoints.api_server de forma que puedas importar todos los archivos de clase.

    • Si creaste una sola API, puedes agregar el código endpoints.api_server necesario al módulo en el que defines tu API porque no necesitas importar ninguna otra clase.

  2. En tu archivo app.yaml, asigna el servidor web que creaste a la ubicación de Cloud Endpoints de la siguiente manera:

    handlers:
    # The endpoints handler must be mapped to /_ah/api.
    - url: /_ah/api/.*
      script: main.api
    
    

    donde main es el módulo de Python en el que definiste el objeto endpoints.api_server.

Entrega tu API desde una ruta diferente

Opcional: Para entregar tu API desde una ruta diferente, por ejemplo, /api/, haz lo siguiente:

  1. Modifica el decorador:

    @endpoints.api(name='echo', version='v1', base_path='/api/')
    
  2. Cambia la sección handlers en el archivo app.yaml:

    handlers:
    - url: /api/.*
      script: main.api
    

Registro en los marcos de trabajo de Endpoints para Python

Los marcos de trabajo de Endpoints para Python registran la información sobre el estado de la aplicación y el ciclo de vida de las solicitudes con el módulo de registro estándar de Python. Para obtener más información sobre los registros de App Engine y cómo acceder a ellos, consulta Leer y escribir registros de aplicación en la documentación de App Engine.

El módulo de registro de Python proporciona niveles de registro predefinidos. En orden ascendente de gravedad, los niveles de registro son los siguientes:

Nivel de registro Descripción
DEBUG Proporciona registros detallados. Por lo general, solo configuras este nivel cuando solucionas un problema.
INFO El nivel predeterminado para los marcos de trabajo de Endpoints. Te permite registrar el progreso de la aplicación en un nivel alto.
WARNING Te alerta cuando ocurre algo inesperado, pero la aplicación puede recuperarse y seguir ejecutándose normalmente.
ERROR Te alerta cuando ocurre un error que puede causar pérdida de funcionalidad, pero la aplicación sigue ejecutándose.
CRITICAL Te alerta cuando ocurre un evento o error grave que puede causar que se cierre la aplicación.

Los registradores siguen una jerarquía separada por puntos. Por ejemplo, el registrador endpoints.api_config es un secundario de endpoints. Esta jerarquía te otorga controles precisos sobre los registros que se emiten o se suprimen. Por lo general, solo cambias los dos registradores raíz de los marcos de trabajo de Endpoints: endpoints y endpoints_management.

Habilitar el registro de DEBUG para los marcos de trabajo de Endpoints.

Con el fin de evitar la sobrecarga del lector de registros, los marcos de trabajo de Endpoints configuran sus registradores para que solo almacenen las entradas de registro con nivel INFO o superior. Luego de que los marcos de trabajo de Endpoints se importen a tu módulo, puedes cambiar el nivel de registro en cualquier momento de la siguiente manera:

import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)

El método setLevel configura el nivel de registro mínimo del registrador.