Python 2 wird von der Community nicht mehr unterstützt. Wir empfehlen die Migration von Python 2-Anwendungen zu Python 3.

Zur Python 3-Standardlaufzeit migrieren

Ab dem 1. Januar 2020 wird die Python-Community für Python 2.7 keine Updates mehr durchführen noch Fehler oder Sicherheitsprobleme beheben. Wir empfehlen, Anwendungen, die noch in der Python 2-Laufzeitumgebung der App Engine-Standardumgebung ausgeführt werden, so schnell wie möglich in die Python 3-Laufzeitumgebung zu migrieren. Weitere Informationen finden Sie unter Python 2-Unterstützung in Google Cloud.

Hauptunterschiede zwischen den Laufzeiten von Python 2 und Python 3

Die meisten Änderungen, die Sie während der Migration vornehmen müssen, sind auf die folgenden Unterschiede zwischen den Laufzeiten von Python 2 und Python 3 zurückzuführen:

Kompatibilitätsprobleme zwischen Python 2 und Python 3

Bei der ersten Veröffentlichung von Python 3 im Jahr 2008 wurden mehrere abwärtskompatible Änderungen an der Sprache vorgenommen. Einige dieser Änderungen erfordern nur geringfügige Aktualisierungen Ihres Codes, z. B. das Ändern der print-Anweisung in eine print()-Funktion. Andere Änderungen erfordern möglicherweise umfangreiche Aktualisierungen Ihres Codes, beispielsweise die Art und Weise, wie Sie Binärdaten, Text und Strings verarbeiten.

Viele beliebte Open-Source-Bibliotheken, einschließlich der Python-Standardbibliotheken, wurden auch beim Übergang von Python 2 zu Python 3 geändert.

Keine gebündelten App Engine-Dienste in der Python 3-Laufzeitumgebung

Ab der Python 3-Laufzeit enthält die App Engine-Standardumgebung keine gebündelten App Engine-Dienste wie Memcache und Aufgabenwarteschlangen mehr. Stattdessen bietet Google Cloud eigenständige Produkte, die den meisten gebündelten Diensten in der Python 2-Laufzeit entsprechen. Für die gebündelten Dienste, die in Google Cloud nicht als separate Produkte verfügbar sind, wie Bildverarbeitung, Suche und Messaging, können Sie Drittanbieter oder andere Behelfslösungen verwenden, wie im Migrationsleitfaden vorgeschlagen.

Wenn Sie die gebündelten App Engine-Dienste entfernen, unterstützt die Python 3-Laufzeit eine vollständig idiomatische Python-Entwicklung. In der Python 3-Laufzeit schreiben Sie eine Python-Standardanwendung, die vollständig portierbar ist und in jeder Python-Standardumgebung, einschließlich App Engine, ausgeführt werden kann.

Zum Weiterleiten von Anfragen für dynamischen Inhalt ist ein Web-Framework erforderlich

In der Python 2-Laufzeit können Sie in der Datei app.yaml URL-Handler erstellen, um anzugeben, welche Anwendung ausgeführt werden soll, wenn eine bestimmte URL oder ein bestimmtes URL-Muster angefordert wird.

In der Python 3-Laufzeit muss Ihre Anwendung ein Web-Framework wie Flask oder Django verwenden, um Anfragen für dynamischen Inhalt weiterzuleiten, anstatt URL-Handler in app.yaml zu verwenden. Für statische Inhalte können Sie weiterhin in der Datei app.yaml Ihrer Anwendung URL-Handler erstellen.

Übersicht über den Migrationsprozess

Wir empfehlen den folgenden inkrementellen Ansatz für die Migration, bei dem Sie während des gesamten Prozesses eine funktionierende und testfähige Anwendung verwalten:

  1. Migrieren Sie die gebündelten App Engine-Dienste in Ihrer Python 2-Anwendung zu Google Cloud-Diensten, Drittanbieterdiensten oder anderen empfohlenen Ersatzdiensten. Testen Sie Ihre Anwendung nach der Migration der einzelnen Dienste.

    Wenn Sie diesen Schritt abgeschlossen haben, sollte Ihre Python 2-Anwendung keine google.appengine APIs mehr verwenden.

  2. Aktualisieren Sie Ihre App so, dass sie sowohl mit Python 2 als auch mit Python 3 kompatibel ist.

    Für dieses Upgrade stehen mehrere Lösungen zur Verfügung. Verwenden Sie beispielsweise Python-Future oder Python-Modernize.

    Weitere Informationen zu diesem Schritt des Migrationsprozesses finden Sie unter Python 2-Code zu Python 3 übertragen auf der Dokumentationswebsite der Python Software Foundation.

  3. App Engine-Konfigurationsdateien für die Python 3-Laufzeit vorbereiten. Einige wichtige Änderungen wirken sich auf die Konfigurationseinstellungen in app.yaml aus. Dazu gehören unter anderem:

    • Anwendungen gelten jetzt als threadsicher. Wenn Ihre Anwendung nicht threadsicher ist, müssen Sie einige Änderungen in Ihrer app.yaml-Datei vornehmen, um ein erhebliches Kostenrisiko zu vermeiden.
    • Die Datei app.yaml leitet keine Anfragen mehr an Ihre Skripts weiter. Stattdessen müssen Sie ein Web-Framework mit In-App-Routing verwenden und alle script-Handler in app.yaml aktualisieren oder entfernen.
  4. Aktualisierte Anwendung in Python 3 testen und bereitstellen

    Möglicherweise müssen Sie viel Zeit für die Behebung von Kompatibilitätsproblemen aufwenden, die erst sichtbar werden, wenn Sie die aktualisierte Anwendung in einer Python 3-Umgebung ausführen.

    Nachdem alle Tests bestanden wurden, stellen Sie die aktualisierte Anwendung in App Engine bereit, aber verhindern Sie, dass Traffic automatisch an die neue Version weitergeleitet wird. Nutzen Sie Trafficaufteilung, um Traffic langsam von Ihrer Anwendung in der Python 2-Laufzeit zur Anwendung in der Python 3-Laufzeit zu migrieren Bei Problemen können Sie den gesamten Traffic an eine stabile Version weiterleiten, bis das Problem behoben ist.