Creare un'app Python nell'ambiente flessibile di App Engine

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base alla regione selezionata al momento della creazione dell'app. Il codice non corrispondono a un paese o a una provincia, anche se potrebbero essere visualizzati alcuni ID regione in modo simile ai codici paese e provincia di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

Questa guida rapida illustra come creare ed eseguire il deployment di un'app che visualizza un breve messaggio. Puoi utilizzare l'applicazione di esempio in questa guida rapida per qualsiasi versione supportata di Python, specificando la versione del runtime e il sistema operativo nel file app.yaml.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Build API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Prerequisiti aggiuntivi

  1. Inizializza la tua app App Engine con il tuo progetto e scegli la relativa area geografica:

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    Quando richiesto, seleziona la regione in cui vuoi individuare la tua applicazione App Engine.

  2. Installa quanto segue sulla tua macchina locale:

    • Esegui questo comando per installare Componente gcloud che include Estensione App Engine per Python:

      gcloud components install app-engine-python
      

  3. Prepara l'ambiente per lo sviluppo in Python. Ti consigliamo di avere installato sul tuo sistema la versione più recente di Python, pip e altri strumenti correlati. Per istruzioni, consulta Guida alla configurazione dell'ambiente di sviluppo Python.

Località App Engine

App Engine è regionale, il che significa che l'infrastruttura che esegue le tue app che si trovano in una regione specifica e Google la gestisce in modo che sia disponibile in modo ridondante tutte le zone all'interno di quella regione.

Soddisfare i requisiti di latenza, disponibilità o durabilità è fondamentale i fattori necessari per selezionare la regione in cui vengono eseguite le tue app. In genere puoi selezionare la regione più vicina agli utenti della tua app, ma devi prendere in considerazione le località in cui è disponibile App Engine, nonché le località degli altri prodotti e servizi Google Cloud utilizzati dalla tua app. Utilizzo dei servizi in più località può influire sulla latenza dell'app e sulle sue determinati del prezzo.

Non puoi modificare la regione di un'app dopo averla impostata.

Se hai già creato un'applicazione App Engine, puoi visualizzarne la regione effettuando una delle seguenti operazioni:

Questa guida rapida mostra l'app Python 3 più recente scritta con il framework web Flask che può essere dispiegato in App Engine. Anche se questo esempio utilizza Flask, puoi utilizzare qualsiasi framework web che soddisfi i requisiti sopra indicati. I framework alternativi includono Django, Pyramid, Bottle e web.py.

scarica l'app Hello World

Abbiamo creato un'app Hello World per App Engine, così potrai rapidamente avere un'idea generale del deployment di un'app in Google Cloud.

  1. Clona il repository dell'app di esempio Hello World nella tua macchina locale.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    In alternativa puoi scaricare l'esempio come file ZIP ed estrarlo.

  2. Passa alla directory che contiene il codice di esempio.

       cd python-docs-samples/appengine/flexible/hello_world
    

Esegui Hello World sulla tua macchina locale

Per eseguire l'applicazione Hello World nel computer locale:

Mac OS/Linux

  1. Crea un ambiente Python isolato:
    python3 -m venv env
    source env/bin/activate
  2. Se non ti trovi nella directory che contiene il codice campione, vai alla directory che contiene il codice campione hello_world. Poi installa le dipendenze:
    cd YOUR_SAMPLE_CODE_DIR
    pip install -r requirements.txt
  3. Esegui l'applicazione:
    python main.py
  4. Nel browser web, inserisci il seguente indirizzo:
    http://localhost:8080

    Se utilizzi Cloud Shell, nella barra degli strumenti fai clic su Anteprima web e seleziona Anteprima sulla porta 8080.

Windows

Utilizza PowerShell per eseguire i pacchetti Python.

  1. Individua l'installazione di PowerShell.
  2. Fai clic con il tasto destro del mouse sulla scorciatoia a PowerShell e avviala come amministratore.
  3. Crea un ambiente Python isolato.
    python -m venv env
    .\env\Scripts\activate
  4. Naviga alla directory del progetto e installa le dipendenze. Se non sei nella directory che contiene il codice campione, passa alla directory che contiene Codice campione hello_world. Poi installa le dipendenze:
    cd YOUR_SAMPLE_CODE_DIR
    pip install -r requirements.txt
  5. Esegui l'applicazione:
    python main.py
  6. Nel browser web, inserisci il seguente indirizzo:
    http://localhost:8080

Nella pagina viene visualizzato il messaggio Hello World dell'app di esempio. Nel tuo premi Ctrl+C per uscire dal server web.

Esegui il deployment di Hello World ed eseguilo su App Engine

Per eseguire il deployment dell'app in App Engine, procedi nel seguente modo: in un ambiente flessibile:

  1. Esegui il deployment dell'app Hello World eseguendo questo dalla directory hello_world:

    gcloud app deploy

    Scopri di più sui flag facoltativi.

    Flag dei comandi gcloud comuni

    • Includi il flag --version per specificare un ID che identifichi in modo univoco la versione della tua app, altrimenti ne verrà generato uno per te. Esempio: --version [YOUR_VERSION_ID]
    • Includi il flag --project per specificare un'alternativa dall'ID progetto Google Cloud a quello che hai inizializzato come per impostazione predefinita nello strumento gcloud. Esempio: --project [YOUR_PROJECT_ID]

    Esempio:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    Per scoprire di più sul deployment dell'app dalla riga di comando, consulta Testare e eseguire il deployment dell'app. Per un elenco di tutti i flag dei comandi, consulta la documentazione di riferimentogcloud app deploy.

  2. Avvia il browser per visualizzare l'app all'indirizzo https://PROJECT_ID.REGION_ID.r.appspot.com

    gcloud app browse
    dove PROJECT_ID rappresenta il tuo ID progetto Google Cloud.

Questa volta la pagina che visualizza il messaggio Hello World viene consegnata da un in esecuzione su un'istanza di App Engine.

Complimenti! Hai eseguito il deployment della tua prima app di App Engine Ambiente flessibile di App Engine.

Se hai riscontrato errori durante il deployment della tua applicazione, controlla suggerimenti per la risoluzione dei problemi.

Consulta le sezioni seguenti per informazioni sulla pulizia e sui possibili passaggi successivi che puoi intraprendere.

Esegui la pulizia

Per evitare addebiti, puoi eliminare il tuo progetto Google Cloud per interrompere la fatturazione per tutte le risorse utilizzate al suo interno.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Passaggi successivi

Impara a conoscere l'intera piattaforma

Ora che sai come sviluppare e implementare app App Engine, puoi esplorare il resto di Google Cloud. Hai già Google Cloud CLI installato, che ti offre gli strumenti per interagire come Cloud SQL, Cloud Storage, Firestore e altro ancora.

Scopri di più sull'ambiente flessibile di App Engine

Ecco alcuni argomenti che ti aiuteranno a continuare a imparare su App Engine:

Revisione del codice Hello World

Hello World è l'app di App Engine più semplice possibile, in quanto contiene servizio, ha una sola versione e tutto il codice si trova all'interno nella directory radice dell'app. Questa sezione descrive nel dettaglio ogni file dell'app.

main.py

L'app Hello World è un'app Flask di base composta da un solo file.

from flask import Flask


app = Flask(__name__)


@app.route("/")
def hello() -> str:
    """Return a friendly HTTP greeting.

    Returns:
        A string with the words 'Hello World!'.
    """
    return "Hello World!"


if __name__ == "__main__":
    # This is used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app.
    app.run(host="127.0.0.1", port=8080, debug=True)

app.yaml

La app.yaml descrive la seguente configurazione per la tua app:

  • Imposta env: flex, a indicare che la tua app utilizza Ambiente flessibile di App Engine.
  • Specifica il runtime utilizzato dall'app. Se escludi l'impostazione runtime_version, App Engine utilizza l'ultima versione Python come versione predefinita dell'app.

  • entrypoint indica ad App Engine come avviare l'app. Questa app utilizza gunicorn per la pubblicazione l'app Python come alternativa all'interfaccia server di sviluppo (utilizzata per l'esecuzione in locale). La variabile $PORT viene impostata da App Engine all'avvio l'app. Per ulteriori informazioni su entrypoint, vedi App all'avvio.

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  operating_system: ubuntu22

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

requirements.txt

requirements.txt e il gestore dei pacchetti Python pip dichiarano e installano le dipendenze dell'applicazione. Hello World richiede Flask, un framework web e Gunicorn, un server WSGI.

Flask==3.0.3; python_version > '3.6'
Flask==2.3.3; python_version < '3.7'
Werkzeug==3.0.3; python_version > '3.6'
Werkzeug==2.3.7; python_version < '3.7'
gunicorn==22.0.0

requirements.txt definisce le librerie che verranno installate sia localmente sia durante il deployment in App Engine.