Konfigurationsdateien für die Python 3-Laufzeit vorbereiten

Bevor Sie Ihre Anwendung in der Python 3-Laufzeit der App Engine-Standardumgebung ausführen können, müssen Sie möglicherweise einige der von App Engine verwendeten Konfigurationsdateien ändern:

  • app.yaml Diese Datei enthält Informationen zum Code Ihrer Anwendung, z. B. die Laufzeit und die Anwendungs-Handler.

  • appengine_config.py Die Python 2-Laufzeit verwendet diese Datei, um auf Bibliotheken von Drittanbietern zuzugreifen und Werte für Konstanten und "Hook-Funktionen" bereitzustellen. Die Python 3-Laufzeit verwendet diese Datei nicht.

app.yaml wird aktualisiert

Das Verhalten einiger Felder in Ihrer app.yaml-Konfigurationsdatei wurde geändert. Entfernen Sie alle nicht mehr unterstützten Felder und aktualisieren Sie andere Felder, wie in der folgenden Tabelle beschrieben.

Feld Art der Änderung Beschreibung
app_engine_apis Gilt nur für Python 3 Muss auf true gesetzt sein, wenn Sie auf die gebündelten Legacy-Dienste für Python 3 zugreifen möchten.
api_version
application_readable
builtins
Nicht mehr unterstützt. Nicht zutreffend in der Python 3-Laufzeit
threadsafe Nicht mehr unterstützt. Alle Anwendungen gelten als threadsicher. Wenn Ihre Anwendung nicht threadsicher ist, geben Sie einen entrypoint an, um 1 Thread pro Worker zu konfigurieren.

Wenn Sie beispielsweise die F4-Instanzklasse verwenden:
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

Sehen Sie sich die Best Practices für Einstiegspunkte für empfohlene Anzahl von Workern für jede Instanzklasse.
Bibliotheken Nicht mehr unterstützt. Verwenden Sie die Datei requirements.txt, um Abhängigkeiten zu deklarieren und Clientbibliotheken zu installieren.
handlers: login Unterstützt, wenn für app_engine_apis der Wert true gilt. Wenn Sie die gebündelten Legacy-Dienste für Python 3 nicht verwenden, verwenden Sie für die Nutzerverwaltung Identity and Access Management (IAM).
handlers: script Geändert In der Python 2-Laufzeit verwenden Sie das Feld script, um eingehende Anfragen an das Skript Ihrer Anwendung weiterzuleiten.

In der Python 3-Laufzeit müssen Sie ein Web-Framework mit anwendungsinternem Routing (z. B. Flask oder Django) anstelle des Feldes script verwenden.

Führen Sie zum Migrieren der Datei app.yaml zur Python 3-Laufzeit einen der folgenden Schritte aus, je nachdem, ob die Datei statische Handler sowie Skript-Handler enthält:

  • Wenn die Datei app.yaml statische Handler enthält, führen Sie einen der folgenden Schritte aus, damit Anfragen für dynamische Inhalte an das Skript Ihrer Anwendung weitergeleitet werden:
    • Entfernen Sie alle script-Felder. Fügen Sie dann das Feld entrypoint hinzu, um einen Webserver zu starten, auf dem Ihre Anwendung ausgeführt wird. Anfragen, die mit keinem Ihrer statischen Handler übereinstimmen, werden an den Webserver weitergeleitet, den Sie im Feld entrypoint angegeben haben. Der Webserver und das Web-Framework der Anwendung sind dafür verantwortlich, die Anfrage an das richtige Skript weiterzuleiten.
    • Ersetzen Sie den Wert aller script-Felder durch auto. App Engine führt Ihre Anwendung automatisch auf einem Webserver aus (sofern Ihre Anwendung einige Anforderungen erfüllt) und alle Anfragen, die mit einem Skript-Handler übereinstimmen, werden an den Webserver weitergeleitet. Der Webserver und das Web-Framework der Anwendung sind dafür verantwortlich, die Anfrage an das richtige Skript weiterzuleiten.
    • Wenn die Datei app.yaml keine statischen Handler enthält, entfernen Sie alle script-Felder. Alle Anfragen an Ihre Anwendung werden an den Webserver Ihrer Anwendung weitergeleitet und das Framework der Anwendung leitet die Anfrage an das richtige Skript weiter. Optional können Sie das Feld entrypoint hinzufügen, um das Standardverhalten beim Start anzupassen. Wenn Ihr app.yaml beide Handlertypen enthält, können Sie weiterhin alle Skript-Handler entfernen, die als auto gekennzeichnet sind, und die statischen Handler sowie auto-Handler zurücklassen, die andere Anweisungen erfordern, wie z. B. den Nur-Administrator-Handler im folgenden Beispiel.

Die Verarbeitung statischer Dateien bleibt unverändert.

Wenn Sie eines der verworfenen Felder verwenden, gibt App Engine einen Fehler zurück, wenn Sie Ihre Anwendung bereitstellen.

Sie können die folgenden Beispiele verwenden, um die Unterschiede zwischen den app.yaml-Dateien zu vergleichen:

Python 2

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

- url: /index\.html
  script: home.app

- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: admin.app
  login: admin

- url: /.*
  script: not_found.app

Python 3

runtime: python312
app_engine_apis: true

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: auto
  login: admin

appengine_config.py entfernen

Die Python 2-Laufzeit in der App Engine-Standardumgebung verwendet die Datei appengine_config.py.

Diese Datei wird in der Python 3-Laufzeit ignoriert. Stattdessen verwendet die Python 3-Laufzeit die Standarddatei requirements.txt zum Installieren von Abhängigkeiten, einschließlich Abhängigkeiten, die nativen Code verwenden.