Utilizzo del server di sviluppo locale

Puoi utilizzare il server di sviluppo locale per simulare l'esecuzione della tua applicazione App Engine in produzione, nonché per accedere ai servizi integrati di App Engine.

L'ambiente simulato applica alcune restrizioni della sandbox, come le funzioni di sistema e le importazioni di moduli Go 1.11, ma non altre, come i timeout delle richieste o le quote.

Il server di sviluppo locale simula anche i servizi forniti dalle librerie nell'SDK per App Engine, tra cui Datastore, Memcache e Task Queues, eseguendo le attività localmente. Quando l'applicazione è in esecuzione nel server di sviluppo, puoi comunque effettuare chiamate API remote all'infrastruttura di produzione utilizzando gli endpoint HTTP delle API di Google.

Prima di iniziare

Poiché Go 1.11 ha raggiunto la fine del supporto, non puoi più utilizzare l'ultima versione di dev_appserver.py per eseguire localmente le tue applicazioni. Per scaricare una versione archiviata di devapp_server.py, segui questi passaggi:

  1. Dall'archivio, scarica la cartella compressa contenente il server dev_appserver.py per i runtime che hanno raggiunto la fine del supporto.

  2. Estrai i contenuti della directory nel file system locale, ad esempio nella directory /home. Puoi trovare dev_appserver.py nella directory google_appengine/.

Configura il server di sviluppo locale

Per eseguire lo strumento del server di sviluppo locale, devi configurare quanto segue:

  1. Verifica di aver installato un interprete Python 2 versione 2.7.12 o successiva.

  2. Imposta la variabile di ambiente DEVAPPSERVER_ROOT nella shell sul percorso dell'interprete Python 2.

Esegui il server di sviluppo locale

Dopo aver configurato il server di sviluppo locale e creato il file di configurazione app.yaml per la tua app, puoi utilizzare il comando dev_appserver.py per eseguire l'app in locale.

Per avviare il server di sviluppo locale:

  1. Nella directory che contiene il file di configurazione app.yaml, esegui il comando dev_appserver.py.

    dev_appserver.py

    Specifica il percorso della directory dell'app, ad esempio:

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py PATH_TO_YOUR_APP
    

    In alternativa, puoi specificare il file di configurazione di un servizio specifico, ad esempio:

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py app.yaml
    

    Per modificare la porta, includi l'opzione --port:

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --port=9999 PATH_TO_YOUR_APP
    

    Sostituisci DEVAPPSERVER_ROOT con il percorso della cartella in cui estrai la versione archiviata di devapp_server.py.

    goapp serve

    Il comando goapp serve è incluso nell'SDK App Engine originale per Go e esegue il wrapping dello strumento Python dev_appserver.py sottostante. Per avviare il server di sviluppo locale, esegui:

      goapp serve
    

    Per scoprire di più sulle opzioni del comando dev_appserver.py, consulta Opzioni del server di sviluppo locale.

  2. Ora il server di sviluppo locale è in esecuzione e rimane in attesa delle richieste. Puoi visitare la pagina http://localhost:8080/ nel browser web per vedere l'app in azione.

    Se hai specificato una porta personalizzata con l'opzione --port, ricordati di aprire il browser su quella porta.

Per arrestare il server locale dalla riga di comando, premi:

  • macOS o Linux: Control+C
  • Windows: Control+Interrompi

Specifica gli ID applicazione

Per accedere all'ID app nel server locale, ad esempio per falsificare un indirizzo email, utilizza la funzione appengine.AppID. Per ottenere il nome host dell'app in esecuzione, utilizza la funzione appengine.DefaultVersionHostname.

Rilevamento dell'ambiente di runtime dell'applicazione

Per determinare se il codice viene eseguito in produzione o nel server di sviluppo locale, puoi chiamare il metodo IsDevAppServer(). Quando questo valore è true, il codice viene eseguito nell'ambiente di sviluppo locale; in caso contrario, viene eseguito in produzione.


package devserver

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
)

func init() {
	http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "IsDevAppServer: %v", appengine.IsDevAppServer())
}

Utilizzo di Datastore locale

Il server di sviluppo locale simula il datastore App Engine utilizzando un file locale che viene mantenuto tra le invocazioni del server locale.

Per ulteriori informazioni sugli indici e su index.yaml, consulta le pagine Indici Datastore e Configurazione dell'indice Datastore.

Sfogliare il datastore locale

Se la tua app ha scritto dati nel tuo Datastore locale utilizzando il server di sviluppo locale, puoi sfogliarli nella console di sviluppo locale.

Per sfogliare Datastore locale:

  1. Avvia il server di sviluppo.

  2. Accedi a Datastore Viewer nella console di sviluppo locale. (L'URL è http://localhost:8000/datastore.)

  3. Visualizza i contenuti del datastore locale.

Specifica il criterio di allocazione degli ID

Per App Engine di produzione, puoi impostare Datastore in modo da generare automaticamente gli ID entità.

Sebbene le norme di assegnazione automatica degli ID per il server di produzione siano completamente diverse da quelle utilizzate dal server di sviluppo, puoi anche impostare le norme di allocazione automatica degli ID per il server locale.

Per specificare la policy di assegnazione automatica degli ID, utilizza l'opzione --auto_id_policy:

python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --auto_id_policy=sequential

Sostituisci:

  • DEVAPPSERVER_ROOT con il percorso della cartella in cui estrai la versione archiviata di devapp_server.py.

  • --auto_id_policy con uno dei seguenti elementi:

    • scattered quando gli ID (impostazione predefinita) vengono assegnati da una sequenza non ripetitiva di numeri interi distribuiti in modo approssimativamente uniforme.
    • sequential quando gli ID vengono assegnati dalla sequenza di numeri interi consecutivi.

Cancella il datastore locale

Per cancellare il datastore locale per un'applicazione, richiama il server di sviluppo locale come segue:

python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --clear_datastore=yes app.yaml

Sostituisci DEVAPPSERVER_ROOT con il percorso della cartella in cui estrai la versione archiviata di devapp_server.py.

Modificare la posizione di Datastore locale

Per modificare la posizione utilizzata per il file datastore, utilizza l'opzione --datastore_path:

python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml

Sostituisci DEVAPPSERVER_ROOT con il percorso della cartella in cui estrai la versione archiviata di devapp_server.py.

Utilizzare il servizio utenti

App Engine fornisce un servizio utenti per semplificare l'autenticazione e l'autorizzazione per la tua applicazione. Il server di sviluppo locale simula il comportamento degli Account Google con le proprie pagine di accesso e disconnessione. Durante l'esecuzione nel server di sviluppo locale, le funzioni LoginURL e LogoutURL restituiscono URL per /_ah/login e /_ah/logout sul server locale.

Utilizzare Mail

Il server di sviluppo locale può inviare email per le chiamate al servizio di posta App Engine utilizzando un server SMTP o un'installazione locale di Sendmail.

Utilizzo di SMTP

Per attivare il supporto della posta con un server SMTP, richiama dev_appserver.py come segue:

   python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

Sostituisci:

  • [DEVAPPSERVER_ROOT] con il percorso della cartella in cui estrai la versione archiviata di devapp_server.py.
  • --smtp_host, --smtp_port, --smtp_user e --smtp_password con i tuoi valori di configurazione.

Utilizzo di Sendmail

Per abilitare il supporto della posta con Sendmail, richiama dev_appserver.py come segue:

   python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

Sostituisci [DEVAPPSERVER_ROOT] con il percorso della cartella in cui estrai la versione archiviata di devapp_server.py.

Il server locale utilizzerà il comando sendmail per inviare messaggi email con la configurazione predefinita dell'installazione.

Utilizzare il recupero URL

Quando l'applicazione utilizza l'API URL Fetch per effettuare una richiesta HTTP, il server di sviluppo locale effettua la richiesta direttamente dal tuo computer. Il comportamento di recupero URL sul server locale potrebbe differire da quello di App Engine di produzione se utilizzi un server proxy per accedere ai siti web.