Il server di sviluppo locale (dev_appserver.py
) fa parte dei componenti di App Engine dell'interfaccia a riga di comando gcloud. Questo argomento fornisce informazioni avanzate sull'utilizzo di dev_appserver.py
.
Ti consigliamo di utilizzare strumenti Python standard, come virtualenv
per creare ambienti isolati e pytest
per eseguire test di unità e di integrazione, anziché fare affidamento su dev_appserver
, il server di sviluppo locale fornito con l'SDK Google Cloud.
Per ulteriori informazioni sui test locali, consulta la sezione Utilizzare il server di sviluppo locale.
Configurare lo strumento del server di sviluppo locale
Un comando dev_appserver.py
di esempio potrebbe avere il seguente aspetto:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES
Sostituisci quanto segue:
- CLOUD_SDK_ROOT con il percorso della directory principale
dove hai installato Google Cloud CLI. La directory predefinita è
./google-cloud-sdk/
. - OPTION con un flag supportato dal server di sviluppo locale.
- FILES specifica uno o più file
app.yaml
, uno per servizio, per l'argomento posizionaleyaml_path
.
Per un elenco completo delle opzioni, esegui il seguente comando:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h
Opzioni comuni
Le opzioni più comuni sono le seguenti:
--admin_host=ADMIN_HOST
- Nome host a cui deve essere associata la console di amministrazione del server di sviluppo locale (valore predefinito: localhost).
--admin_port=ADMIN_PORT
- Porta a cui deve essere associata la console di amministrazione del server di sviluppo locale (valore predefinito: 8000).
--addn_host=ADDN_HOST
- Questo argomento consente di inserire nella lista consentita valori aggiuntivi dell'intestazione Host HTTP, in modo che il server possa essere reso accessibile dietro un proxy, senza dover disattivare il controllo dell'host (vedi
--enable_host_checking
). Gli host aggiuntivi che iniziano con*.
consentono tutti i sottodomini. Ad esempio,*.example.org
consentehost.example.org
, ma nonsub.host.example.org
oexample.org
. Gli host che iniziano con**.
consentono sottodomini di qualsiasi profondità. Ad esempio,**.example.com
consentehost.example.com
esub.host.example.com
, ma nonexample.com
. (valore predefinito: []) --allow_skipped_files=...
- Rendi i file specificati nei gestori
app.yaml
skip_files
ostatic
leggibili dall'applicazione (valore predefinito: False). -A APP_ID, --application=...
- Imposta l'applicazione, sostituendo il valore dell'applicazione
del file
app.yaml
(valore predefinito: Nessuno). --appidentity_email_address=...
- Indirizzo email associato a un account di servizio con una chiave scaricabile.
Può essere
None
per nessuna identità dell'applicazione locale (valore predefinito: Nessuno). --appidentity_private_key_path=...
- Percorso del file della chiave privata associata all'account di servizio (formato
.pem
). Deve essere impostato se è impostatoappidentity_email_address
(valore predefinito: Nessuno). --api_host=API_HOST
- Nome host a cui deve essere associato il server API (valore predefinito: localhost).
--api_port=API_PORT
- Porta a cui deve essere associato il server per le chiamate API (valore predefinito: 0).
--auth_domain=...
- Nome del dominio di autorizzazione da utilizzare (valore predefinito:
gmail.com
). --auto_id_policy=...
- Ritirata. Come il data store locale assegna gli ID automatici. Le opzioni sono
sequential
oscattered
(valore predefinito:scattered
). --automatic_restart=...
- Riavvia automaticamente le istanze quando i file pertinenti al relativo modulo vengono modificati (valore predefinito: True).
--blobstore_path=...
- Percorso della directory utilizzata per archiviare i contenuti dei blob (se non impostato, viene utilizzato per impostazione predefinita una sottodirectory di
--storage_path
) (valore predefinito: Nessuno). --clear_datastore=yes|no
- Svuota i file di dati e della cronologia del datastore prima di avviare il server web (valore predefinito:
no
). --clear_search_indexes...
- Cancella gli indici di ricerca (valore predefinito: False).
--custom_entrypoint=...
Specifica un punto di contatto per i moduli di runtime personalizzati. Questo è necessario quando sono presenti questi moduli. Includi
{port}
nella stringa (senza virgolette) per passare il numero di porta come argomento (valore predefinito: ). Ad esempio:--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"
--datastore_consistency_policy {consistent,random,time}
Il criterio da applicare per decidere se una scrittura nel datastore deve essere visualizzata nelle query globali (valore predefinito: ora).
--datastore_emulator_cmd=...
Il percorso di uno script che richiama l'emulatore Cloud Datastore. Se non viene specificato,
dev_appserver
tenterà di trovare l'emulatore Datastore in Google Cloud SDK (valore predefinito: Nessuno).--datastore_emulator_port=...
Il numero di porta su cui dev_appserver deve avviare l'emulatore Cloud Datastore (valore predefinito: 0).
--datastore_path=...
Il percorso da utilizzare per il file di dati del data store locale. Il server crea questo file se non esiste.
--default_gcs_bucket_name=...
Nome del bucket Cloud Storage predefinito (valore predefinito: Nessuno).
--dev_appserver_log_level {debug,info,warning,critical,error}
Il livello di log al di sotto del quale i messaggi di log generati dal server di sviluppo non verranno visualizzati sulla console (questo flag è più utile per diagnosticare i problemi in
dev_appserver.py
anziché nel codice dell'applicazione) (valore predefinito: info).--enable_host_checking=yes|no
Determina se applicare il
HTTP
controllo dell'host per i moduli dell'applicazione, il server API e il server di amministrazione. Il controllo dell'host protegge dagli attacchi DNS rebinding. Disattiva questa opzione solo dopo aver compreso le implicazioni per la sicurezza (valore predefinito: True).--enable_console=yes|no
Attiva la console interattiva nella visualizzazione Amministrazione (valore predefinito: False).
--enable_sendmail=yes|no
Utilizza l'installazione di
Sendmail
sul computer locale per inviare messaggi email.--enable_task_running=yes|no
Consente al server di sviluppo di eseguire attività push (valore predefinito:
yes
). Se specifichino
, il server non eseguirà attività push.--env_var=...
Variabile di ambiente definita dall'utente per il processo di runtime locale. Ogni
env_var
ha il formato dikey=value
e puoi definire più variabili di ambiente. Oltre aenv_variables
inapp.yaml
, questo flag consente di impostare variabili di ambiente aggiuntive per i processi locali.Ad esempio:
--env_var KEY_1=val1 --env_var KEY_2=val2
--grpc_api_port...
Porta su cui il server API
gRPC
è in ascolto (valore predefinito:0).--help
Stampa un messaggio utile e poi esce.
--host=...
L'indirizzo host da utilizzare per il server. Potresti dover impostare questa opzione per poter accedere al server di sviluppo da un altro computer della rete. Un valore di
0.0.0.0
consente sia l'accesso a localhost sia l'accesso all'IP o al nome host (valore predefinito:localhost
).--log_level=...
Il livello di logging più basso a cui i messaggi di logging verranno scritti nella console. Verranno visualizzati i messaggi del livello di logging specificato o superiore. I valori possibili sono
debug
,info
,warning
,error
ecritical
.--logs_path=...
Per impostazione predefinita, i log del server di sviluppo locale vengono memorizzati solo in memoria. Specifica questa opzione quando esegui il server di sviluppo locale per archiviare i log in un file, in modo che siano disponibili durante i riavvii del server. Devi specificare il percorso della directory e il nome di un file del database SQLite. Se il file non esiste già, viene creato un file del database SQLite con il nome specificato.
Ad esempio:
--logs_path=/home/logs/boglogs.db
--max_module_instances=...
Il numero massimo di istanze di runtime che possono essere avviate per un determinato modulo. Il valore può essere un numero intero, nel qual caso tutti i moduli sono limitati al numero di istanze o un elenco di
module:max_instances
separati da virgole (valore predefinito: Nessuno). Ad esempio:default:5,backend:3
--mysql_host=MYSQL_HOST
Nome host di un server MySQL in esecuzione utilizzato per lo spazio di archiviazione Cloud SQL simulato (valore predefinito: localhost).
--mysql_port=MYSQL_PORT
Numero di porta di un server MySQL in esecuzione utilizzato per lo spazio di archiviazione Cloud SQL simulato (valore predefinito: 3306).
--mysql_user=MYSQL_USER
Nome utente da utilizzare per la connessione al server MySQL specificato in
--mysql_host
e--mysql_port
o--mysql_socket
(valore predefinito: ).--mysql_password=MYSQL_PASSWORD
Password da utilizzare per la connessione al server MySQL specificato in
--mysql_host
e--mysql_port
o--mysql_socket
(valore predefinito: ).--mysql_socket=MYSQL_SOCKET
Percorso di un file socket Unix da utilizzare per la connessione a un server MySQL in esecuzione utilizzato per lo spazio di archiviazione Cloud SQL simulato (valore predefinito: Nessuno).
--port=...
Il numero di porta da utilizzare per il server. Il valore predefinito è
8080
. Se vengono avviati più server, ad esempio per i servizi, verranno assegnate porte successive, ad esempio8081
,8082
.--require_indexes=yes|no
Disattiva la generazione automatica delle voci nel file
index.yaml
. Invece, quando l'applicazione esegue una query che richiede che l'indice sia definito nel file e la definizione dell'indice non viene trovata, viene generata un'eccezione, simile a quanto accadrebbe durante l'esecuzione su App Engine (valore predefinito:no
).--runtime=...
Specifica i runtime predefiniti che vuoi utilizzare. Per l'elenco dei runtime supportati, consulta il programma di supporto del runtime.
--running_datastore_emulator_host=...
Sostituisce la variabile di ambiente DATASTORE_EMULATOR_HOST, ovvero l'
hostname:port
di un emulatore Cloud Datastore in esecuzione a cuidev_appserver
può connettersi (valore predefinito: Nessuno).--search_indexes_path=...
Percorso di un file utilizzato per archiviare gli indici di ricerca (se non impostato, il valore predefinito è un file in
--storage_path
) (valore predefinito:Nessuno).--skip_sdk_update_check=...
Salta il controllo degli aggiornamenti dell'SDK (se false, utilizza
.appcfg_nag
per decidere) (valore predefinito: False).--show_mail_body=...
Logga i contenuti delle email inviate utilizzando l'API Mail (valore predefinito: False).
--smtp_allow_tls...
Consenti l'utilizzo di TLS quando il server SMTP annuncia il supporto di TLS (ignorato se non è impostato --smtp_host) (valore predefinito: True).
--smtp_host=...
Il nome host del server SMTP da utilizzare per l'invio dei messaggi email.
--smtp_port=...
Il numero di porta del server SMTP da utilizzare per l'invio di messaggi email.
--smtp_user=...
Il nome utente da utilizzare con il server SMTP per l'invio di messaggi email.
--smtp_password=...
La password da utilizzare con il server SMTP per l'invio di messaggi email.
--storage_path=...
Percorso in cui verranno archiviati tutti i file locali, ad esempio i file e i log di Datastore, Blobstore e Cloud Storage, a meno che non vengano sostituiti da
--datastore_path
,--blobstore_path
o--logs_path
.--support_datastore_emulator=yes|no
Utilizza l'emulatore Cloud Datastore (beta) per l'emulazione del datastore locale.
--ssl_certificate_path=...
Percorso del certificato SSL. Se utilizzi questa opzione, devi fornire anche
--ssl_certificate_key_path
(valore predefinito: Nessuno).--ssl_certificate_key_path=...
Percorso della chiave privata SSL corrispondente. Se utilizzi questa opzione, devi fornire anche
--ssl_certificate_path
(valore predefinito: Nessuno).--threadsafe_override=...
Sostituisci la configurazione thread-safe dell'applicazione. Il valore può essere un valore booleano, nel qual caso verrà sostituita l'impostazione threadsafe di tutti i moduli oppure un elenco separato da virgola di
module:threadsafe_override
(valore predefinito: None).Ad esempio:
default:False,backend:True
--use_mtime_file_watcher=...
Utilizza il polling mtime per rilevare le modifiche al codice sorgente. È utile se modifichi il codice da una macchina remota utilizzando un sistema di file distribuito (valore predefinito: False).
--watcher_ignore_re=...
Stringa regex per specificare i file da ignorare dal filewatcher. (valore predefinito: Nessuno)
Opzioni di comando specifiche del runtime Python:
--python_startup_script
- Lo script da eseguire all'avvio di nuove istanze di runtime Python (utile per strumenti come i debugger) (valore predefinito: None).
--python_startup_args
- Gli argomenti resi disponibili allo script specificato in
python_startup_script
(valore predefinito: None). --python27_executable_path=...
- Il percorso dell'eseguibile python27 per le istanze di runtime python27 (valore predefinito: None).
--python_virtualenv_path
- Il percorso della directory utilizzata per configurare un ambiente virtuale Python 3 per l'ambiente di esecuzione devappserver locale per le applicazioni Python 3. Se il percorso non esiste, la directory viene creata, ma non verrà ripulita al termine dell'esecuzione di devappserver, consentendo la memorizzazione nella cache tra le invocazioni. Se non è definita, verrà utilizzata una directory temporanea che verrà ripulita al termine dell'esecuzione.
--runtime_python_path=...
- Il percorso del file binario Python. Per eseguire un'app Python su
dev_appserver
, specifica questo flag.