Il server di sviluppo locale emula l'ambiente di runtime Java di App Engine e tutti i relativi servizi, incluso Datastore.
Prima di iniziare
Poiché il supporto di Java 8 è terminato, 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:
Dall'archivio, scarica la cartella compressa contenente il server
dev_appserver.pyper i runtime che hanno raggiunto la fine del supporto.Estrai i contenuti della directory nel file system locale, ad esempio nella directory
/home. Puoi trovaredev_appserver.pynella directorygoogle_appengine/google/appengine/tools/java/bin.
Esecuzione del server web di sviluppo
Per informazioni sull'impostazione delle proprietà di sistema e delle variabili di ambiente per la tua app, vedi Come vengono gestite le richieste.
Puoi anche eseguire il server web di sviluppo da un prompt dei comandi. Il comando
da eseguire si trova nella directory dell'SDK con il percorso relativo google_appengine/google/appengine/tools/java/bin.
Sintassi del comando Windows:
google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintassi del comando Linux o macOS:
google_appengine/google/appengine/tools/java/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]
Il comando accetta la posizione della directory WAR della tua applicazione come argomento.
Arrestare il server di sviluppo
Per arrestare il server web, premi Ctrl+C.
Rilevamento dell'ambiente di runtime dell'applicazione
Per determinare se il codice viene eseguito in produzione o nel server di sviluppo locale, puoi controllare il valore del metodo SystemProperty.environment.value(). Ad esempio:
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// Production
} else {
// Local development server
// which is: SystemProperty.Environment.Value.Development
}
Utilizzo dell'emulatore Datastore locale
Il server web di sviluppo simula Datastore utilizzando un Datastore locale basato su file sul tuo computer. Il datastore si chiama local_db.bin ed è
creato nella directory WAR dell'applicazione, nella
directory WEB-INF /appengine-generated/. Non viene caricato con la tua
richiesta.
Questo Datastore viene mantenuto tra le invocazioni del server web, quindi i dati archiviati saranno ancora disponibili alla successiva esecuzione del server web. Per cancellare i contenuti del datastore, arresta il server, quindi elimina questo file.
Come descritto in
Configurazione degli indici Datastore,
il server di sviluppo può generare la configurazione per gli indici Datastore necessari
alla tua applicazione, determinati dalle query che esegue durante il test. Viene generato un file denominato datastore-indexes-auto.xml nella
directory WEB-INF/appengine-generated/ nel file WAR. Per disattivare la configurazione automatica
dell'indice, crea o modifica il file datastore-indexes.xml nella directory WEB-INF/, utilizzando l'attributo autoGenerate="false" per l'elemento
<datastore-indexes>.
Esplorazione di Datastore nel server di sviluppo
Per sfogliare il tuo Datastore locale utilizzando il server web di sviluppo:
- Avvia il server di sviluppo come descritto in precedenza.
- Vai alla console di sviluppo.
- Fai clic su Visualizzatore Datastore nel riquadro di navigazione a sinistra per visualizzare i contenuti di Datastore locali.
Il modello di coerenza di Datastore
Per impostazione predefinita, il datastore locale è configurato in modo che la percentuale di scritture del datastore che non sono immediatamente visibili nelle query globali sia impostata sul 10%.
Per regolare questo livello di coerenza, imposta la proprietà di sistema datastore.default_high_rep_job_policy_unapplied_job_pct con un valore corrispondente alla quantità di coerenza finale che vuoi che la tua applicazione visualizzi.
-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
Se imposti questa proprietà utilizzando il prompt dei comandi java_dev_appserver.sh,
devi utilizzare --jvm_flag=... per impostarla:
google_appengine/google/appengine/tools/java/bin/java-dev_appserver.sh --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
L'intervallo valido per datastore.default_high_rep_job_policy_unapplied_job_pct è
compreso tra 0 e 100. Se utilizzi numeri al di fuori di questo intervallo, riceverai
un errore.
Specificare il criterio di allocazione automatica degli ID
Puoi configurare il modo in cui Datastore locale assegna ID entità automatici .
Nel server di sviluppo sono supportate le seguenti norme di allocazione automatica degli ID:
sequential- Gli ID vengono assegnati dalla sequenza di numeri interi consecutivi.
scattered- Gli ID vengono assegnati da una sequenza non ripetitiva di numeri interi distribuiti in modo approssimativamente uniforme.
Il criterio predefinito nel datastore locale è scattered.
Per specificare la policy ID automatico, imposta la proprietà di sistema
datastore.auto_id_allocation_policy su sequential o
scattered.
-Ddatastore.auto_id_allocation_policy=scattered
Per impostare questa proprietà di sistema tramite un flag passato alla macro dev_appserver:
java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered
Simulazione degli account utente
Il server web di sviluppo simula gli Account Google con le proprie pagine di accesso e
disconnessione. Durante l'esecuzione sul server web di sviluppo, i metodi
che generano gli URL di accesso e uscita restituiscono URL per /_ah/login e
/_ah/logout sul server locale.
La pagina di accesso per lo sviluppo include un modulo in cui puoi inserire un indirizzo email. La sessione utilizza l'indirizzo email che inserisci come utente attivo.
Per fare in modo che l'applicazione ritenga che l'utente che ha eseguito l'accesso sia un amministratore, seleziona la casella di controllo "Accedi come amministratore" nel modulo.
Utilizzo di Recupero URL
Quando l'applicazione utilizza l'API URL Fetch per effettuare una richiesta HTTP, il server web di sviluppo effettua la richiesta direttamente dal tuo computer. Il comportamento potrebbe essere diverso da quello che si verifica quando l'applicazione viene eseguita su App Engine se utilizzi un server proxy per accedere ai siti web.
Console di sviluppo
Il server web di sviluppo include un'applicazione web della console. Con la console puoi sfogliare il Datastore locale.
Per accedere alla console, visita l'URL /_ah/admin sul tuo server:
http://localhost:8080/_ah/admin
Argomenti della riga di comando
Il comando del server di sviluppo supporta i seguenti argomenti della riga di comando:
--address=...-
L'indirizzo host da utilizzare per il server. Potresti dover impostare questo valore per accedere al server di sviluppo da un altro computer della tua rete. Un indirizzo di
0.0.0.0consente sia l'accesso localhost sia l'accesso al nome host. Valore predefinito:localhost. --default_gcs_bucket=...-
Imposta il nome del bucket Google Cloud Storage predefinito.
--disable_update_check-
Se specificato, il server di sviluppo non contatterà App Engine per verificare la disponibilità di una nuova release dell'SDK. Per impostazione predefinita, il server controlla la presenza di una nuova versione all'avvio e stampa un messaggio se è disponibile una nuova versione.
--generated_dir=...-
Imposta la directory in cui vengono creati i file generati.
--help-
Stampa un messaggio utile e poi esce.
--jvm_flag=...-
Passa il flag specificato come argomento JVM. Può essere ripetuto per fornire più flag.
--port=...-
Il numero di porta da utilizzare per il server. Il valore predefinito è
8080. --sdk_root=...-
Un percorso per gcloud CLI, se diverso dalla posizione dello strumento.
--server=...-
Il server da utilizzare per determinare l'ultima versione dell'SDK.