Debes definir un servidor web que use la API o las APIs que hayas creado. Cloud Endpoints Frameworks para Python implementa la interfaz estándar Web Server Gateway Interface (WSGI) para enrutar las solicitudes a tu API hacia los métodos de tu código.
Al igual que con cualquier aplicación que se ejecute en App Engine, debes crear un archivo llamado app.yaml
en el que configures los ajustes de tu aplicación de App Engine. Para definir el servidor web, debes hacer cambios en el archivo app.yaml
.
Para definir un servidor web, sigue estos pasos:
Crea un módulo de Python, por ejemplo
main.py
, y crea un objetoendpoints.api_server
en el nivel superior:El código
api = endpoints.api_server([EchoApi])
crea una aplicación WSGI que dirige las solicitudes de la API a los métodos de la claseEchoAPI
.Puedes proporcionar una lista de objetos
remote.Service
(que definiste al crear tu API) aendpoints.api_server
. Si tienes una API implementada en varias clases, tu objetoremote.Service
es una colección de clases, tal como se describe en Crear una API implementada con varias clases.Si creas un módulo independiente para el objeto
endpoints.api_server
, dependerá de si has creado una o varias APIs.Si has creado varias APIs (con varias subclases
remote.Service
) que se definen en varios archivos, te recomendamos que crees un módulo independiente para el objetoendpoints.api_server
para poder importar todos los archivos de clase.Si has creado una sola API, puedes añadir el código
endpoints.api_server
necesario al módulo en el que definas tu API, ya que no tienes que importar ninguna otra clase.
En el archivo
app.yaml
, asigna el servidor web que acabas de crear a la ubicación de Cloud Endpoints de la siguiente manera:donde
main
es el módulo de Python en el que has definido el objetoendpoints.api_server
.
Servir tu API desde una ruta diferente
Opcional: Para servir tu API desde otra ruta, por ejemplo, /api/
, haz lo siguiente:
Modificar el decorador:
@endpoints.api(name='echo', version='v1', base_path='/api/')
Cambia la sección
handlers
del archivoapp.yaml
:handlers: - url: /api/.* script: main.api
Registro en Endpoints Frameworks para Python
Endpoints Frameworks para Python usa el módulo de registro estándar de Python para registrar información sobre el estado de la aplicación y el ciclo de vida de las solicitudes. Para obtener más información sobre los registros de App Engine y cómo verlos, consulta el artículo Leer y escribir registros de aplicaciones de la documentación de App Engine.
El módulo de registro de Python proporciona niveles de registro predefinidos. Los niveles de registro, ordenados de menor a mayor gravedad, son los siguientes:
Nivel de registro | Descripción |
---|---|
DEBUG |
Proporciona registros detallados. Normalmente, solo se define este nivel cuando se está solucionando un problema. |
INFO |
Nivel de registro predeterminado de Endpoints Frameworks. Te permite hacer un seguimiento del progreso de la aplicación a un nivel general. |
WARNING |
Te avisa de que ha ocurrido algo inesperado, pero la aplicación puede recuperarse y seguir funcionando con normalidad. |
ERROR |
Te avisa de que se ha producido un error que puede provocar la pérdida de algunas funciones, pero la aplicación sigue ejecutándose. |
CRITICAL |
Te avisa de que se ha producido un error o un evento grave que puede provocar que la aplicación se cierre. |
Los registradores se organizan en una jerarquía separada por puntos. Por ejemplo, el registrador
endpoints.api_config
es un elemento secundario del registrador endpoints
. Esta jerarquía te permite controlar con precisión qué registros se emiten o se suprimen. Normalmente, solo se cambian los dos registradores raíz de Endpoints Frameworks: endpoints
y endpoints_management
.
Habilitar el registro de DEBUG
para Endpoints Frameworks
Para evitar sobrecargar el lector de registros, Endpoints Frameworks configura sus registradores para que solo registren entradas de registro con el nivel de registro INFO
o superior. En cualquier momento después de importar Endpoints Frameworks en tu módulo, puedes cambiar el nivel de registro de la siguiente manera:
import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)
El método setLevel
define el nivel de registro mínimo del registrador.