Auf dieser Seite wird beschrieben, wie Sie die Deferred API, einen der gebündelten Legacy-Dienste, mit der Python 3-Laufzeit für die Standardumgebung verwenden. Ihre Anwendung kann über das App Engine Services SDK für Python 3 auf die gebündelten Dienste zugreifen.
Übersicht
Bisher war das Deferred-Paket google.appengine.ext.deferred
vom Web-App-Framework in Python 2 abhängig. Da das Web-App-Framework im App Engine Services SDK für Python 3 entfernt wurde, müssen Sie beim Upgrade Ihrer Python 2-Anwendung auf Python 3 einige Änderungen vornehmen.
Deferred API aktivieren
Wenn Sie die Deferred API für Python 3 aktivieren möchten, müssen Sie builtins.deferred
in der Datei app.yaml
nicht mehr auf on
setzen. Stattdessen müssen Sie use_deferred=True
im Aufruf von wrap_wsgi_app()
übergeben, um die API zu aktivieren.
Gemeinsamkeiten und Unterschiede
Standardmäßig verwendet die Deferred API für Python 3 dieselbe URL /_ah/queue/deferred
und dieselbe Standardwarteschlange wie in Python 2. Beachten Sie, dass für Anwendungen, die zu Cloud Tasks migrieren, die Standardwarteschlange nicht automatisch erstellt wird und die Bibliothek für zurückgestellte Aufgaben nicht verfügbar ist.
Wenn Ihre Anwendung den Standard-Endpunkt /_ah/queue/deferred
verwendet, bleibt die Verwendung von deferred.defer()
in Python 3 mit der in Python 2 identisch.
Wenn Ihre Anwendung eine benutzerdefinierte URL zur Ausführung zurückgestellter Aufgaben verwendet, müssen Sie einige Änderungen vornehmen, da die TaskHandler
-Klasse im deferred
-Modul für Python 2 in der Python 3-Version dieser API entfernt wurde.
Zum Festlegen einer benutzerdefinierten URL für die Ausführung von zurückgestellten Aufgaben kann die Anwendung entweder die post
- oder die run_from_request
-Methode in der deferred.Handler
-Klasse (früher deferred.TaskHandler
in Python 2) überschreiben und den environ
-Parameter übergeben, der ein Wörterbuch mit WSGI-Anfrageparametern darstellt. Die post
-Methode kann dann vom benutzerdefinierten Endpunkt aufgerufen werden (wie in den Python 3-Beispielen gezeigt).
Die durchgängige Nutzung der Python 3 Deferred API, wie z. B. die Weiterleitung von Anfragen und der Zugriff auf das Wörterbuch environ
, hängt von dem Web-Framework ab, auf das die Anwendung migriert wird. Vergleichen Sie Codeänderungen, die im Python 2-Beispiel vorgenommen wurden, mit den Python 3-Beispielen in den folgenden Abschnitten.
Beispiele für Python 3
Das folgende Beispiel zeigt, wie Sie eine zurückgestellte Aufgabe mit einem Standardendpunkt und einem benutzerdefinierten Endpunkt in einer Flask-Anwendung und Django-Anwendung ausführen.
Flask
Django
Ohne Framework
Codebeispiele
Die vollständigen Codebeispiele aus dieser Anleitung finden Sie unter GitHub.