Preparazione dei file di configurazione per il runtime Python 3

Prima di poter eseguire l'app nel runtime di Python 3 dell'ambiente standard di App Engine, potresti dover modificare alcuni dei file di configurazione utilizzati da App Engine:

  • app.yaml. Questo file contiene informazioni sul codice dell'app, come il runtime e i gestori dell'app.

  • appengine_config.py. Il runtime di Python 2 utilizza questo file per accedere alle librerie di terze parti e fornire valori per costanti e "funzioni hook". Il runtime di Python 3 non utilizza questo file.

Aggiornamento di app.yaml

Il comportamento di alcuni campi nel file di configurazione app.yaml è stato modificato. Rimuovi tutti i campi non più supportati e aggiorna gli altri campi come descritto nella tabella seguente.

Campo Tipo di modifica Descrizione
app_engine_bundled_services Valido solo per Python 3 Configura questo campo per accedere a specifici servizi in bundle legacy per Python 3. Per ulteriori informazioni sulle impostazioni di configurazione app_engine_bundled_services, consulta il app.yaml riferimento al file.
api_version
application_readable
builtins
Non più supportata Non applicabile nel runtime di Python 3.
threadsafe Non più supportata Si presume che tutte le applicazioni siano thread-safe. Se la tua applicazione non è thread-safe, specifica un entrypoint configurando 1 thread per worker.

Ad esempio, quando utilizzi la classe di istanza F4:
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

Consulta le best practice per entrypoint per il numero consigliato di worker per ogni classe di istanza.
libraries Non più supportata Utilizza il file requirements.txt per dichiarare le dipendenze e installare le librerie client.
handlers: login Supportato se abiliti l'API Users configurando l'impostazione user nell'elenco app_engine_bundled_services. Se non utilizzi i servizi in bundle legacy per Python 3, utilizza Identity and Access Management (IAM) per la gestione degli utenti.
handlers: script Modificato Nel runtime di Python 2, utilizzi il script campo per indirizzare le richieste in entrata allo script dell'app.

Nel runtime di Python 3, devi utilizzare un framework web con routing in-app (come Flask o Django) anziché il campo script.

Per eseguire la migrazione del file app.yaml al runtime di Python 3, procedi in uno dei seguenti modi, a seconda che il file contenga gestori statici e gestori di script:

  • Se il file app.yaml contiene gestori statici, procedi in uno dei seguenti modi per assicurarti che le richieste di contenuti dinamici vengano indirizzate allo script dell'app:
    • Rimuovi tutti i campi script. Poi aggiungi un entrypoint campo per avviare un server web che esegue l'app. Le richieste che non corrispondono a nessuno dei gestori statici verranno indirizzate al server web specificato nel entrypoint campo. Il server web e il framework web dell'app sono responsabili dell'indirizzamento della richiesta allo script corretto.
    • Sostituisci il valore di tutti i campi script con auto. App Engine eseguirà automaticamente l'app in un server web (supponendo che l'app soddisfi alcuni requisiti) e tutte le richieste che corrispondono a un gestore di script verranno indirizzate al server web. Il server web e il framework web dell'app sono responsabili dell'indirizzamento della richiesta allo script corretto.
    • Se il file app.yaml **non** contiene gestori statici, rimuovi tutti i campi script. Tutte le richieste a tua app verranno indirizzate al server web dell'app e il framework dell'app indirizzerà la richiesta allo script corretto. Facoltativamente, puoi aggiungere un entrypoint campo per personalizzare il comportamento di avvio predefinito. Se il file app.yaml contiene entrambi i tipi di gestori, puoi comunque rimuovere tutti i gestori di script che verrebbero contrassegnati come auto, lasciando i gestori statici e i gestori auto che richiedono altre direttive, come il gestore solo per amministratori nell'esempio riportato di seguito.

La gestione dei file statici rimane invariata.

Se utilizzi uno dei campi deprecati, App Engine restituisce un errore quando esegui il deployment dell'app.

Puoi utilizzare gli esempi seguenti per confrontare le differenze tra i file app.yaml:

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: python314
app_engine_bundled_services:
#list your services

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

Rimozione di appengine_config.py

Il runtime di Python 2 nell'ambiente standard di App Engine utilizza il file appengine_config.py.

Questo file viene ignorato nel runtime di Python 3. Il runtime di Python 3 utilizza invece il file requirements.txt standard per installare le dipendenze, incluse quelle che utilizzano codice nativo.