Creazione di un server web

Devi definire un server web che utilizzi API o API create da te. Cloud Endpoints Frameworks per Python implementa l'interfaccia di gateway del server web (WSGI) standard per inoltrare le richieste all'API ai metodi nel codice.

Come per ogni applicazione in esecuzione su App Engine, devi creare un file chiamato app.yaml in cui configurare le impostazioni dell'app App Engine. Per definire il server web, apporti modifiche al file app.yaml.

Per definire un server web:

  1. Crea un modulo Python, ad esempio main.py, e un oggetto endpoints.api_server di primo livello:

    api = endpoints.api_server([EchoApi])

    Il codice api = endpoints.api_server([EchoApi]) crea un'applicazione WSGI che inoltra le richieste API ai metodi della classe EchoAPI.

    Puoi fornire un elenco di remote.Service oggetti (che hai definito quando hai creato l'API) per endpoints.api_server. Se la tua API è implementata in vari l'oggetto remote.Service è una raccolta di classi descritta in Creazione di un'API implementata con più classi.

    Se crei un modulo separato per l'oggetto endpoints.api_server dipende dalla creazione di una o più API.

    • Se hai creato più API (utilizzando remote.Service (sottoclassi) definite in più file, allora consigliamo crei un modulo separato per l'oggetto endpoints.api_server in modo che che potrai importare tutti i file del corso.

    • Se hai creato una singola API, puoi aggiungere endpoints.api_server al modulo in cui definisci l'API perché non devi importare altre classi.

  2. Nel file app.yaml, mappa il server web che hai appena creato la località di Cloud Endpoints come segue:

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

    dove main è il modulo Python in cui hai definito Oggetto endpoints.api_server.

Pubblicazione dell'API da un percorso diverso

(Facoltativo) Per pubblicare l'API da un percorso diverso, ad esempio /api/:

  1. Modifica il decoratore:

    @endpoints.api(name='echo', version='v1', base_path='/api/')
    
  2. Modifica la sezione handlers nel file app.yaml:

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

Logging in Endpoints Frameworks per Python

Endpoints Frameworks per Python utilizza il modulo di logging Python standard per registrare informazioni sullo stato e sul ciclo di vita delle richieste dell'applicazione. Per scoprire di più sui log di App Engine e su come visualizzarli, consulta Lettura e scrittura dei log delle applicazioni nella documentazione di App Engine.

Il modulo di logging di Python fornisce livelli di log predefiniti. In ordine crescente di gravità, i livelli di log sono:

Livello di log Descrizione
DEBUG Fornisce log dettagliati. In genere, questo livello viene impostato solo per la risoluzione dei problemi.
INFO Il livello di log predefinito per i framework di Endpoints. Consente di tracciare lo stato di avanzamento dell'applicazione a livello generale.
WARNING Ti avvisa che si è verificato un problema imprevisto, ma l'applicazione può recuperare ed eseguire normalmente.
ERROR Ti avvisa che si è verificato un errore che potrebbe causare la perdita di funzionalità, ma l'applicazione è ancora in esecuzione.
CRITICAL Ti avvisa che si è verificato un errore o un evento grave che potrebbe causare l'arresto dell'applicazione.

I logger esistono in una gerarchia separata da punti. Ad esempio, il logger endpoints.api_config è un elemento secondario del logger endpoints. Questa gerarchia ti offre un controllo preciso sui log emessi o soppressi. In genere, modifichi solo i due logger principali per i framework di Endpoints: endpoints e endpoints_management.

Attiva il logging di DEBUG per i framework di endpoint

Per evitare di sovraccaricare il lettore di log, Endpoints Frameworks imposta i suoi logger in modo da registrare solo le voci di log con il livello INFO o superiore. In qualsiasi momento dopo l'importazione di Endpoints Frameworks nel modulo, puoi modificare il livello di log come segue:

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

Il metodo setLevel imposta il livello minimo di log per il logger.