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:appConsulta 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
Per eseguire la migrazione del file
|
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.