Preparazione dei file di configurazione per il runtime di Python 3

Prima di poter eseguire l'app nel runtime 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, ad esempio il tempo di esecuzione e i gestori dell'app.

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

Aggiornamento di app.yaml in corso…

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

Campo Tipo di modifica Descrizione
API_motore_app Applicabile solo a Python 3 È necessario impostarlo su true se vuoi accedere ai servizi in bundle precedenti per Python 3.
api_version
application_leggibile
integrato
Non è più supportato Non applicabile al runtime Python 3.
threadsafe Non più supportata Si presume che tutte le applicazioni siano protette da thread. Se la tua applicazione non è sicura tramite thread, specifica un entrypoint che configuri 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 relative ai punti di contatto per il numero di worker consigliato per ogni classe di istanza.
librerie Non più supportata Utilizza il file requirements.txt per dichiarare le dipendenze e installare le librerie client.
gestori: accesso Supportato se app_engine_apis è true Se non utilizzi i servizi bundle precedenti per Python 3, utilizza Identity and Access Management (IAM) per la gestione degli utenti.
gestori: script Modified (Data dell'ultima modifica) Nel runtime Python 2, utilizzi il campo script per instradare le richieste in entrata allo script della tua app.

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

Per eseguire la migrazione del file app.yaml nel runtime di Python 3, esegui una delle seguenti operazioni, a seconda che il file contenga gestori statici o gestori di script:

  • Se il tuo file app.yaml contiene gestori statici, procedi in uno dei seguenti modi per assicurarti che le richieste di contenuti dinamici vengano indirizzate allo script della tua app:
    • Rimuovi tutti i campi script. Aggiungi quindi un campo entrypoint per avviare un server web che esegua la tua app. Le richieste che non corrispondono a nessuno dei tuoi gestori statici verranno indirizzati al server web specificato nel campo entrypoint. Il server web e il framework web della tua app sono responsabili del routing della richiesta allo script corretto.
    • Sostituisci il valore di tutti i campi script con auto. App Engine eseguirà automaticamente la tua app in un server web (supponendo che la tua app soddisfi alcuni requisiti) e tutte le richieste corrispondenti a un gestore di script verranno indirizzate al server web. Il server web e il framework web della tua app sono responsabili del routing della richiesta allo script corretto.
    • Se il file app.yaml non contiene gestori statici, rimuovi tutti i campi script. Tutte le richieste alla tua app verranno indirizzate al server web dell'app e il framework dell'app reindirizzerà la richiesta allo script corretto. Se vuoi, puoi aggiungere un campo entrypoint per personalizzare il comportamento di avvio predefinito. Se app.yaml ha entrambi i tipi di gestori, puoi comunque rimuovere tutti i gestori di script che sarebbero contrassegnati con auto, lasciando indietro i gestori statici e i gestori auto che richiedono altre istruzioni, come il gestore solo amministratore nell'esempio che segue.

La gestione statica dei file rimane invariata.

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

Puoi utilizzare gli esempi riportati di seguito 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: python311
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

Rimozione di appengine_config.py in corso...

Il runtime 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 Python 3 utilizza invece il file requirements.txt standard per installare le dipendenze, incluse le dipendenze che utilizzano il codice nativo. Per ulteriori informazioni, consulta la sezione Specificare le dipendenze nel runtime di Python 3.