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:
Crea un módulo de Python, por ejemplo,
main.py, y un objetoendpoints.api_serveren el nivel superior: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 claseEchoAPI.Puedes proporcionarle a
endpoints.api_serveruna lista de objetosremote.Service(que definiste cuando creaste tu API ). Si tienes una API que se implementó en varias clases, entonces tu objetoremote.Servicees 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_serverdepende 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 objetoendpoints.api_serverde forma que puedas importar todos los archivos de clase.Si creaste una sola API, puedes agregar el código
endpoints.api_servernecesario al módulo en el que defines tu API porque no necesitas importar ninguna otra clase.
En tu archivo
app.yaml, asigna el servidor web que creaste a la ubicación de Cloud Endpoints de la siguiente manera:donde
maines el módulo de Python en el que definiste el objetoendpoints.api_server.
Entrega tu API desde una ruta diferente
Opcional: Para entregar tu API desde una ruta diferente, por ejemplo, /api/, haz lo siguiente:
Modifica el decorador:
@endpoints.api(name='echo', version='v1', base_path='/api/')Cambia la sección
handlersen el archivoapp.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.