Preparazione dei file di configurazione per il runtime Python 3

Prima di poter eseguire l'app nel runtime Python 3 dell'ambiente standard di App Engine, devi potrebbe essere necessario 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 Python 2 utilizza questo file per accedere librerie di terze parti e forniscono valori per le costanti e le "funzioni hook". Il runtime di Python 3 non utilizza questo file.

Aggiornamento di app.yaml in corso…

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

Campo Tipo di modifica Descrizione
app_engine_apis Applicabile solo a Python 3 Deve essere impostato su true se vuoi accedere ai servizi in bundle legacy per Python 3.
api_version
application_readable
integrati
Non più supportata Non applicabile nel runtime di Python 3.
threadsafe Non più supportata Si presume che tutte le applicazioni siano a prova di thread. Se la tua applicazione non è sicura per i thread, specifica un entrypoint che configuri un thread per worker.

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

Consulta le best practice per gli entry point per il numero consigliato di worker per ogni classe di istanze.
librerie Non più supportata Utilizza il file requirements.txt per dichiarare le dipendenze e installare le librerie client.
handlers: login Supportato se app_engine_apis è true Se non utilizzi i servizi in bundle precedenti 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 inoltrare le richieste in arrivo 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 campo script.

Per eseguire la migrazione del file app.yaml al runtime Python 3, procedi nel seguente modo: uno dei seguenti, a seconda che il file contenga gestori statici nonché i gestori degli script:

  • Se il file app.yaml contiene gestori statici, eseguine uno per garantire che le richieste di contenuti dinamici vengano indirizzato allo script della tua app:
    • Rimuovi tutti i campi script. Aggiungi poi un campo entrypoint per avviare un server web che esegue la tua app. Le richieste che non corrispondono a nessuno dei tuoi gestori statici verranno indirizzate al server web specificato nel campo entrypoint. Il server web e il framework web della tua app sono responsabili dell'inoltro della richiesta allo script corretto.
    • Sostituisci il valore di tutti i campi script con auto. App Engine eseguirà automaticamente la tua app su un web server (supponendo che soddisfi alcuni requisiti) e tutte le richieste corrispondenti a un gestore di script verranno indirizzate al web server. Il server web e il framework web dell'app vengono responsabile di indirizzare la richiesta allo script corretto.
    • Se il file app.yaml non contiene gestori statici, rimuovi tutti i campi script. Tutte le richieste a l'app verrà indirizzata al server web dell'app e i server instrada la richiesta allo script corretto. Puoi puoi aggiungere entrypoint per personalizzare comportamento di avvio predefinito. Se il tuo app.yaml ha entrambi i tipi di gestori, puoi rimuovi comunque tutti i gestori di script contrassegnati auto, lasciando i gestori statici e Gestori auto che richiedono altre istruzioni, come solo per gli amministratori nell'esempio riportato di seguito.

Statico gestione dei file rimane invariata.

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

Puoi utilizzare i seguenti esempi 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: 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

Rimozione di appengine_config.py

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

Questo file viene ignorato nel runtime di Python 3. Al contrario, il runtime Python 3 utilizza il file requirements.txt standard per installare le dipendenze, incluse le dipendenze che usano codice nativo.