Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Auf dieser Seite wird beschrieben, wie Sie in Ihrer App Engine-Anwendung HTTP(S)-Anfragen senden.
Standardmäßig verwendet App Engine den URL-Abrufdienst, um ausgehende HTTP(S)-Anfragen zu senden. Weitere Informationen zu Größenbeschränkungen für Anfragen und dazu, welche Header in einer URL-Abrufanfrage gesendet werden, finden Sie unter Ausgehende Anfragen.Wenn Sie den serverlosen VPC-Zugriff eingerichtet haben oder die Sockets API verwenden, müssen Sie URL Fetch an der Bearbeitung von Anfragen hindern.
URL Fetch führt dazu, dass Anfragen an Ihr VPC-Netzwerk oder an die Sockets API fehlschlagen. Wenn Sie URL Fetch deaktiviert haben, verarbeitet die Standard-Python-Bibliothek HTTP-Anfragen. Wenn Sie die von URL Fetch bereitgestellten Features für bestimmte Anfragen benötigen, können Sie für diese bestimmten Anfragen die Bibliothek urlfetch
direkt verwenden.
HTTP-Request senden
Verwenden Sie die Methode urlfetch.fetch
, um eine ausgehende HTTP-Anfrage zu senden. Zur Verbesserung der Codeportabilität können Sie auch die Python-Standardbibliotheken urllib
, urllib2
oder httplib
verwenden, um HTTP-Anfragen zu senden.
Wenn Sie diese Bibliotheken in App Engine verwenden, führen sie HTTP-Requests mithilfe des URL-Abrufdiensts von App Engine aus. Sie können auch die Drittanbieterbibliothek requests
verwenden, wenn Sie sie für die Verwendung von URLFetch konfigurieren.
urlfetch
Die folgenden Snippets zeigen, wie Sie mit urlfetch
eine grundlegende HTTP-GET
-Anfrage ausführen. Importieren Sie zuerst die Bibliothek urlfetch
aus dem App Engine-SDK:
Verwenden Sie dann urlfetch
, um die GET
-Anfrage auszuführen:
Im folgenden Snippet wird dargestellt, wie eine komplexere Anfrage ausgeführt wird, indem Daten über eine HTTP-POST
-Anfrage mit urlfetch
aus einem Webformular gesendet werden:
urllib2
Die folgenden Snippets zeigen, wie Sie mit urllib2
eine grundlegende HTTP-GET
-Anfrage ausführen. Importieren Sie zuerst die Bibliothek urllib2
:
Verwenden Sie dann urllib2
, um die GET
-Anfrage auszuführen:
Anfragen
Um Anfragen verwenden zu können, müssen Sie requests
und requests-toolbelt
mithilfe der Vendoring-Anleitung installieren.
Nach der Installation verwenden Sie das Modul requests_toolbelt.adapters.appengine
, um Anfragen zur Verwendung von URLFetch zu konfigurieren:
Nach der Konfiguration können Sie Requests normal verwenden:
Weitere Informationen zum Google App Engine-Support zu Anfragen finden Sie in der Dokumentation für urllib3.contrib.appengine
und requests_toolbelt.appengine
Anfragezeitüberschreitung festlegen
Mit der Funktion urlfetch.set_default_fetch_deadline()
können Sie die Standardfrist anpassen. Diese Funktion speichert die neue Standardfrist in einer Thread-lokalen Variablen. Daher muss sie für jeden Request festgelegt werden, z. B. in einer benutzerdefinierten Middleware.
Weiterleitungen deaktivieren
Wenn Sie URL-Abruf verwenden, folgt der zugrunde liegende URL-Abrufdienst standardmäßig bis zu fünf Weiterleitungen. Diese Weiterleitungen können vertrauliche Informationen wie Autorisierungsheader an das Weiterleitungsziel weiterleiten. Wenn Ihre Anwendung keine HTTP-Weiterleitungen erfordert, empfehlen wir, die Weiterleitungen zu deaktivieren.
Damit URL-Abrufdienst keinen Weiterleitungen folgt, legen Sie den follow_redirects
-Parameter der fetch
-Methode auf False
fest.
HTTPS-Request senden
Um eine HTTPS-Anfrage zu senden, setzen Sie beim Aufrufen der urlfetch.fetch()
-Methode den Parameter validate_certificate
auf true
.
Asynchrone Requests senden
HTTP(S)-Requests sind standardmäßig synchron. Ihre Anwendung muss folgende Vorgänge durchführen, um einen asynchronen Request zu senden:
- Erstellen Sie ein neues RPC-Objekt mit
urlfetch.create_rpc()
. Dieses Objekt repräsentiert in nachfolgenden Methodenaufrufen asynchrone Aufrufe. - Rufen Sie
urlfetch.make_fetch_call()
auf, um die Anfrage zu senden. Diese Methode nutzt das RPC-Objekt und die URL des Anfrageziels als Parameter. - Rufen Sie die Methode
get_result()
des RPC-Objekts auf. Diese Methode gibt das Ergebnisobjekt zurück, wenn die Anfrage erfolgreich war, und löst eine Ausnahme aus, wenn bei der Anfrage ein Fehler aufgetreten ist.
Die folgenden Snippets veranschaulichen die Ausführung einer einfachen asynchronen Anfrage aus einer Python-Anwendung. Importieren Sie zuerst die Bibliothek urlfetch
aus dem App Engine-SDK:
Verwenden Sie dann urlfetch
, um die asynchrone Anfrage auszuführen:
Anfragezeitüberschreitung festlegen
Wenn Sie ein Zeitlimit für Ihre Anfrage festlegen möchten, legen Sie beim Erstellen des RPC-Objekts den Parameter deadline
der Methode urlfetch.create_rpc()
fest.
Callback-Funktion verwenden
Sie können eine Callback-Funktion für das RPC-Objekt festlegen. Die Funktion wird aufgerufen, wenn Ihre Anwendung eine Methode für das Objekt aufruft, z. B. wait()
, checksuccess()
oder get_result()
, die das Objekt wartet, bis die Anfrage abgeschlossen ist.
So verwenden Sie eine Callback-Funktion zur Verarbeitung des Ergebnisses Ihres Abrufaufrufs:
- Erstellen Sie eine Hilfsfunktion, um den Umfang des Callbacks festzulegen.
- Erstellen Sie eine Handler-Funktion, um das Ergebnis des Abrufaufrufs zu verarbeiten.
- Legen Sie das Attribut
callback
des RPC-Objekts auf die Hilfsfunktion fest.
Das folgende Snippet veranschaulicht das Aufrufen einer Callback-Funktion:
Requests an andere App Engine-Anwendungen senden
Wenn Sie eine Anfrage an eine andere App Engine-Anwendung senden, muss die Identität dieser Anwendung bestätigt werden. Geben Sie zusätzlich in die Anfrage den Header X-Appengine-Inbound-Appid
ein.
Wenn Sie den URL-Abrufdienst so konfigurieren, dass er keiner Weiterleitung folgt, fügt App Engine diesen Header automatisch zu Anfragen hinzu.
Informationen zum Deaktivieren von Weiterleitungen finden Sie unter Weiterleitungen deaktivieren.
Nächste Schritte
Unter Ausgehende Anfragen finden Sie weitere Informationen zum URL-Abrufdienst, z. B. zu den Headern, die in einer URL-Abrufanfrage gesendet werden.