Puoi utilizzare il server di sviluppo locale per simulare per eseguire l'applicazione App Engine in produzione e per utilizzarla per accedere ai servizi in bundle di App Engine.
L'ambiente simulato applica alcune limitazioni della sandbox, ad esempio per le funzioni di sistema e per le importazioni di moduli Python 2, ma non altri, come timeout delle richieste o quote.
Il server di sviluppo locale simula anche i servizi forniti nell'SDK per App Engine, tra cui Datastore, Memcache e Code di attività, eseguendo le relative attività localmente. Se la tua applicazione in esecuzione nel server di sviluppo, puoi comunque effettuare chiamate API remote al dell'infrastruttura di produzione utilizzando gli endpoint HTTP delle API di Google.
Prima di iniziare
Poiché Python 2.7 ha raggiunto la fine del supporto, non puoi più utilizzare
l'ultima versione di dev_appserver.py
per eseguire localmente
diverse applicazioni. Per scaricare una versione archiviata di devapp_server.py
:
passaggi:
Dall'archivio, scarica la cartella compressa che contiene Server
dev_appserver.py
per i runtime che hanno raggiunto la fine del supporto.Estrai il contenuto della directory nel file system locale, ad esempio nella directory
/home
. Puoi trovaredev_appserver.py
nella directorygoogle_appengine/
.
Configura il server di sviluppo locale
Per eseguire lo strumento del server di sviluppo locale, devi configurare quanto segue:
Verifica di aver installato un interprete Python 2 della versione 2.7.12 o successiva.
Imposta la variabile di ambiente
DEVAPPSERVER_ROOT
nella shell su il percorso dell'interprete Python 2.
Esegui il server di sviluppo locale
Dopo aver configurato il server di sviluppo locale e creato il
app.yaml
:
di configurazione del file della tua app, puoi usare il comando dev_appserver.py
per
la tua app in locale.
Per avviare il server di sviluppo locale:
Nella directory che contiene il file di configurazione
app.yaml
, esegui il comandodev_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, ad esempio:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py app.yaml
Per cambiare 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 didevapp_server.py
.Per scoprire di più sulle opzioni del comando
dev_appserver.py
, consulta Opzioni del server di sviluppo locale.Il server di sviluppo locale è ora in esecuzione e rimane in ascolto delle richieste. Tu puoi visitare http://localhost:8080/ nel tuo browser per vedere l'app in azione.
Se hai specificato una porta personalizzata con l'opzione
--port
, ricordati di aprire il tuo browser a quella porta.
Per arrestare il server locale dalla riga di comando, premi quanto segue:
- macOS o Linux: Ctrl+C
- Windows: Ctrl+Interruzione
Specifica gli ID applicazione
Per accedere al tuo ID app nel server locale, ad esempio per lo spoofing di un'email
, utilizza
get_application_id()
personalizzata. Per trovare il nome host dell'app in esecuzione, usa la
get_default_version_hostname()
personalizzata.
Rilevamento dell'ambiente di runtime dell'applicazione in corso...
Per determinare se il tuo codice è in esecuzione in produzione o nell'ambiente
di sviluppo, puoi verificare il valore dell'ambiente SERVER_SOFTWARE
variabile:
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
# Production
else:
# Local development server
Utilizzo del datastore locale
Il server di sviluppo locale simula il datastore di App Engine utilizzando un'istanza che persiste tra le chiamate al server locale.
Per saperne di più sugli indici e sui index.yaml
, consulta
Indici datastore
e Indice Datastore
Configurazione.
Sfoglia il datastore locale
Se la tua app ha scritto dati nel tuo Datastore locale utilizzando lo sviluppo locale puoi consultarlo nella console di sviluppo locale.
Per sfogliare Datastore locale:
Accedi al Visualizzatore Datastore nella nella console di sviluppo locale. L'URL è
http://localhost:8000/datastore
.Visualizzare i contenuti locali di Datastore.
Specifica il criterio di allocazione degli ID
Per App Engine di produzione, puoi impostare Datastore su generare automaticamente gli ID entità.
Sebbene i criteri di assegnazione automatica degli ID per il server di produzione completamente diverse da quelle usate dal server di sviluppo, puoi anche il criterio di allocazione automatica degli ID per il server locale.
Per specificare il criterio di assegnazione automatica degli ID, utilizza l'--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:scattered
quando gli ID (predefinito) vengono assegnati da una sequenza non ripetuta di numeri interi distribuiti approssimativamente in modo 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 metodo 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
.
Modifica la località Datastore locale
Per modificare la località utilizzata per il file del datastore, usa --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
Servizio utenti per semplificare
di autenticazione e autorizzazione per la tua applicazione. Lo sviluppo locale
server simula il comportamento di Google
Account
con le proprie pagine di accesso e uscita. Mentre corri con
di sviluppo software,
users.create_login_url
e users.create_logout_url
restituiscono URL per /_ah/login
e /_ah/logout
sul server locale.
Utilizza Mail
Il server di sviluppo locale può inviare email per le chiamate ad App Engine servizio di posta elettronica tramite un server SMTP o un'installazione locale 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 didevapp_server.py
.--smtp_host
,--smtp_port
,--smtp_user
e--smtp_password
opzioni con i tuoi valori di configurazione.
Utilizzo di Sendmail
Per attivare il supporto via posta con Sendmail, richiama dev_appserver.py
in questo modo:
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
configurazione predefinita dell'installazione.
Utilizza il recupero URL
Quando la tua applicazione utilizza l'API di recupero URL per effettuare una richiesta HTTP, il server di sviluppo locale effettua la richiesta direttamente dal tuo computer. La Il comportamento di recupero dell'URL sul server locale può essere diverso dall'ambiente di produzione App Engine se utilizzi un server proxy per accedere ai siti web.
Utilizzare la console interattiva
La console interattiva consente agli sviluppatori di inserire codice Python arbitrario in un modulo web e lo esegue all'interno dell'ambiente dell'app; fornisce lo stesso accesso all'ambiente e ai servizi dell'applicazione di un file .py all'interno l'applicazione.
Per utilizzare la console interattiva:
Accedi alla console interattiva dalla nella console di sviluppo locale. L'URL è
http://localhost:8000/console
.Inserisci nell'area di testo l'eventuale codice Python che desideri eseguire, quindi invia modulo per eseguirlo. Ad esempio, il seguente codice aggiungerà un'entità Datastore chiamato
Greeting
con contenuto testuale diHello
:from google.appengine.ext import ndb class Greeting(ndb.Model): content = ndb.TextProperty() e = Greeting(content="Hello") e.put()
Eseguire il debug con il debugger Python
Per utilizzare il Debugger Python (pdb
):
Aggiungi la seguente riga al codice:
import pdb; pdb.set_trace();
dev_appserver
verrà interrotto a questo punto e verrà inserito nel REPL dapdb
(read-eval-print), che ti consente di eseguire il debug del tuo codice dalla riga di comando.Se la tua applicazione effettua più richieste simultanee che richiamano
pdb.set_trace()
, verranno avviate contemporaneamente più sessioni di debug, ciascuna di cui invia l'output aSTDOUT
. Per evitare che ciò accada, serializza le richieste la disattivazione del supporto multi-threading e multi-elaborazionedev_appserver
, come segue:Disabilita il multi-threading per:
- Tutti i servizi che utilizzano il flag
--threadsafe_override=false
. - Un servizio che utilizza il flag
--threadsafe_override=<SERVICENAME>:false
. - Più servizi che utilizzano il flag
--threadsafe_override=<SERVICE1NAME>:false,<SERVICE2NAME>:false
.
- Tutti i servizi che utilizzano il flag
Disattiva l'elaborazione multipla per:
- Tutti i servizi che utilizzano il flag
--max_module_instances=1
. - Un servizio che utilizza il flag
--max_module_instances=<SERVICENAME>:1
. - Più servizi che utilizzano il flag
--max_module_instances=<SERVICE1NAME>:1,<SERVICE2NAME>:1
.
- Tutti i servizi che utilizzano il flag