Webserver erstellen

Definieren Sie einen API-Server, der die von Ihnen erstellte(n) API(s) verwendet. Cloud Endpoints Frameworks für Python implementiert die standardmäßige Schnittstelle Web Server Gateway Interface (WSGI), um Anforderungen an die API für die Methoden im Code weiterzuleiten.

Wie bei jeder in App Engine ausgeführten Anwendung müssen Sie eine Datei namens app.yaml erstellen, in der Sie die Einstellungen der App Engine-Anwendung konfigurieren. Wenn Sie den Webserver definieren möchten, müssen Sie Änderungen in der Datei app.yaml vornehmen.

Einen Webserver definieren:

  1. Erstellen Sie ein Python-Modul wie main.py und auf der obersten Ebene das Objekt endpoints.api_server:

    api = endpoints.api_server([EchoApi])

    Der Code api = endpoints.api_server([EchoApi]) erstellt eine WSGI-Anwendung, mit der API-Anfragen zu den Methoden in der Klasse EchoAPI weitergeleitet werden.

    Sie können eine Liste von remote.Service-Objekten, die Sie beim Erstellen der API definiert haben, für endpoints.api_server bereitstellen. Wenn die API in mehreren Klassen implementiert ist, dann ist das Objekt remote.Service eine Sammlung von Klassen, wie unter Auf mehrere Klassen abgestimmte API erstellen beschrieben.

    Das Erstellen eines eigenen Moduls für das Objekt endpoints.api_server hängt davon ab, ob Sie eine einzelne API oder mehrere APIs erstellt haben.

    • Wenn Sie mehrere APIs (mit mehreren untergeordneten Klassen remote.Service) erstellt haben und diese APIs in mehreren Dateien definiert sind, sollten Sie ein eigenes Modul für das Objekt endpoints.api_server erstellen, damit Sie alle Klassendateien importieren können.

    • Wenn Sie eine einzelne API erstellt haben, können Sie den erforderlichen Code endpoints.api_server in das Modul einfügen, in dem Sie Ihre API definieren, da Sie keine anderen Klassen importieren müssen.

  2. Ordnen Sie in der Datei app.yaml den gerade erstellen Webserver dem Cloud Endpoints-Standort so zu:

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

    Dabei ist main das Python-Modul, in dem Sie das Objekt endpoints.api_server definiert haben.

API über anderen Pfad bereitstellen

Optional: So stellen Sie die API über einen anderen Pfad (z. B. /api/) bereit:

  1. Ändern Sie den Decorator:

    @endpoints.api(name='echo', version='v1', base_path='/api/')
    
  2. Ändern Sie in der Datei app.yaml den Abschnitt handlers:

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

Logging mit Endpoint Frameworks for Python

In Endpoints Frameworks for Python wird das standardmäßige Python-Logging-Modul verwendet, um Informationen zum Status der Anwendung und zum Lebenszyklus der Anfrage zu protokollieren. Weitere Informationen zu App Engine-Logs und wie sie angezeigt werden, finden Sie in der Dokumentation zu App Engine unter Anwendungslogs lesen und schreiben.

Das Python-Logging-Modul bietet vordefinierte Logebenen. In aufsteigender Reihenfolge der Schweregrade lauten die Logebenen so:

Logebene Beschreibung
DEBUG Bietet detaillierte Logs. Normalerweise wird diese Stufe nur zur Fehlerbehebung festgelegt.
INFO Die standardmäßige Logebene für Endpoints Frameworks. Ermöglicht das Verfolgen des Fortschritts Ihrer Anwendung auf übergeordneter Ebene.
WARNING Warnt Sie bei unerwarteten Ereignissen. Die Anwendung kann jedoch wiederhergestellt und trotzdem normal ausgeführt werden.
ERROR Warnt Sie bei einem Fehler, der zu Funktionsverlust führen kann, obwohl die Anwendung weiterhin ausgeführt wird.
CRITICAL Warnt Sie bei einem schwerwiegenden Fehler oder Ereignis, wodurch die Anwendung möglicherweise heruntergefahren wird.

Logger existieren in einer durch Punkte getrennten Hierarchie. Der Logger endpoints.api_config ist beispielsweise dem Logger endpoints untergeordnet. Mit dieser Hierarchie können Sie genau steuern, welche Logs ausgegeben oder unterdrückt werden. In der Regel ändern Sie nur die beiden Stamm-Logger für Endpoints Frameworks: endpoints und endpoints_management.

DEBUG-Logging für Endpoints Frameworks aktivieren

Endpoints Frameworks legt die Logger so fest, dass nur Logeinträge mit der Logebene INFO oder höher aufgezeichnet werden, damit der Logreader nicht überlastet wird. Nachdem Endpoints Frameworks in das Modul importiert wurde, können Sie die Logebenen jederzeit so ändern:

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

Die Methode setLevel legt die Mindestlogebene für den Logger fest.