Il server di sviluppo locale (dev_appserver.py) fa parte dei componenti App Engine di gcloud CLI. 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 unitari e di integrazione, anziché fare affidamento su
dev_appserver, il server di sviluppo locale fornito
con Google Cloud SDK.
Per ulteriori informazioni sui test locali, consulta la sezione Utilizzo del 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
in cui 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 comando seguente:
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 (impostazione predefinita: localhost).
--admin_port=ADMIN_PORT- Porta a cui deve essere associata la console di amministrazione del server di sviluppo locale (impostazione predefinita: 8000).
--addn_host=ADDN_HOST- Questo argomento consente di inserire nella lista consentita valori di intestazione host HTTP aggiuntivi, in modo che il server possa essere reso accessibile tramite 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.orgconsentehost.example.orgma nonsub.host.example.orgoexample.org. Gli host che iniziano con**.consentono sottodomini di qualsiasi livello. Ad esempio,**.example.comconsentehost.example.comesub.host.example.com, ma nonexample.com. (predefinito: []) --allow_skipped_files=...- Rende i file specificati nei gestori
app.yamlskip_filesostaticleggibili dall'applicazione (impostazione predefinita: False). -A APP_ID, --application=...- Imposta l'applicazione, ignorando il valore dell'applicazione
dal file
app.yaml(impostazione predefinita: Nessuno). --appidentity_email_address=...- Indirizzo email associato a un account di servizio con una chiave scaricabile.
Può essere
Noneper nessuna identità dell'applicazione locale (valore predefinito: Nessuno). --appidentity_private_key_path=...- Percorso del file della chiave privata associato al account di servizio (formato
.pem). Deve essere impostato seappidentity_email_addressè impostato (valore predefinito: Nessuno). --api_host=API_HOST- Nome host a cui deve essere associato il server API (impostazione predefinita: localhost).
--api_port=API_PORT- Porta a cui deve essere associato il server per le chiamate API (impostazione predefinita: 0).
--auth_domain=...- Nome del dominio di autorizzazione da utilizzare (impostazione predefinita:
gmail.com). --auto_id_policy=...- Deprecato. Come l'archivio dati locale assegna gli ID automatici. Le opzioni sono
sequentialoscattered(impostazione predefinita:scattered). --automatic_restart=...- Riavvia automaticamente le istanze quando vengono modificati i file pertinenti al loro modulo (impostazione predefinita: True).
--blobstore_path=...- Percorso della directory utilizzata per archiviare i contenuti dei blob
(se non impostato, il valore predefinito è una sottodirectory di
--storage_path) (valore predefinito: None). --clear_datastore=yes|no- Cancella i file di dati e della cronologia del datastore prima di avviare il server web (impostazione predefinita:
no). --clear_search_indexes...- Cancella gli indici di ricerca (impostazione predefinita: False).
--custom_entrypoint=...Specifica un punto di ingresso per i moduli runtime personalizzati. Questa operazione è necessaria 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 del datastore deve essere visualizzata nelle query globali (impostazione predefinita: ora).
--datastore_emulator_cmd=...Il percorso di uno script che richiama l'emulatore Cloud Datastore. Se lasciato vuoto,
dev_appservertenterà di trovare l'emulatore Datastore in Google Cloud SDK (impostazione predefinita: 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 datastore locale. Il server crea questo file se non esiste.
--default_gcs_bucket_name=...Nome del bucket Cloud Storage predefinito (impostazione predefinita: Nessuno).
--dev_appserver_log_level {debug,info,warning,critical,error}Il livello di log al di sotto del quale i messaggi di logging generati dal server di sviluppo non verranno visualizzati sulla console (questo flag è più utile per diagnosticare i problemi in
dev_appserver.pypiuttosto che nel codice dell'applicazione) (impostazione predefinita: info).--enable_host_checking=yes|noDetermina se applicare il controllo host per i moduli dell'applicazione, il server API e il server amministratore.
HTTPIl controllo dell'host protegge dagli attacchi DNS rebinding. Disattivalo solo dopo aver compreso le implicazioni per la sicurezza (impostazione predefinita: True).--enable_console=yes|noAttiva la console interattiva nella visualizzazione amministratore (impostazione predefinita: False).
--enable_sendmail=yes|noUtilizza l'installazione di
Sendmaildel computer locale per l'invio di messaggi email.--enable_task_running=yes|noConsente al server di sviluppo di eseguire attività push (impostazione predefinita:
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è nel formatokey=valuee puoi definire più variabili di ambiente. Oltre aenv_variablesinapp.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 è in ascolto il server API
gRPC(impostazione predefinita:0).--helpStampa 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 indirizzo di
0.0.0.0consente l'accesso sia a localhost sia tramite IP o nome host (valore predefinito:localhost).--log_level=...Il livello di logging più basso in cui i messaggi di logging verranno scritti nella console; verranno restituiti i messaggi del livello di logging specificato o superiore. I valori possibili sono
debug,info,warning,errorecritical.--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 dopo i riavvii del server. Devi specificare il percorso e il nome della directory di un file di database SQLite. Se il file non esiste già, viene creato un file di 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 a un elenco separato da virgole di
module:max_instances(impostazione predefinita: Nessuno). Ad esempio:default:5,backend:3--mysql_host=MYSQL_HOSTNome host di un server MySQL in esecuzione utilizzato per l'archiviazione Cloud SQL simulata (impostazione predefinita: localhost).
--mysql_port=MYSQL_PORTNumero di porta di un server MySQL in esecuzione utilizzato per l'archiviazione Cloud SQL simulata (valore predefinito: 3306).
--mysql_user=MYSQL_USERNome utente da utilizzare per la connessione al server MySQL specificato in
--mysql_hoste--mysql_porto--mysql_socket(impostazione predefinita: ).--mysql_password=MYSQL_PASSWORDPassword da utilizzare per la connessione al server MySQL specificato in
--mysql_hoste--mysql_porto--mysql_socket(impostazione predefinita: ).--mysql_socket=MYSQL_SOCKETPercorso di un file socket Unix da utilizzare per la connessione a un server MySQL in esecuzione utilizzato per l'archiviazione Cloud SQL simulata (impostazione predefinita: None).
--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|noDisattiva la generazione automatica di voci nel file
index.yaml. Al contrario, quando l'applicazione esegue una query che richiede che il suo indice sia definito nel file e la definizione dell'indice non viene trovata, viene generata un'eccezione, in modo simile a quanto accadrebbe durante l'esecuzione su App Engine (impostazione predefinita:no).--runtime=...Specifica i runtime predefiniti che vuoi utilizzare. Per l'elenco dei runtime supportati, consulta la pianificazione del supporto dei runtime.
--running_datastore_emulator_host=...Esegue l'override della variabile di ambiente DATASTORE_EMULATOR_HOST, il che significa che l'
hostname:portdi un emulatore Cloud Datastore in esecuzione a cuidev_appserverpuò connettersi (impostazione predefinita: None).--search_indexes_path=...Percorso di un file utilizzato per archiviare gli indici di ricerca (il valore predefinito è un file in
--storage_pathse non è impostato) (impostazione predefinita:Nessuno).--skip_sdk_update_check=...Ignora il controllo degli aggiornamenti dell'SDK (se false, utilizza
.appcfg_nagper decidere) (impostazione predefinita: False).--show_mail_body=...Registra i contenuti delle email inviate utilizzando l'API Mail (impostazione predefinita: False).
--smtp_allow_tls...Consente l'utilizzo di TLS quando il server SMTP annuncia il supporto di TLS (ignorato se --smtp_host non è impostato) (impostazione predefinita: 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 dei 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, come Datastore, Blobstore, i file e i log di Cloud Storage, a meno che non venga sostituito da
--datastore_path,--blobstore_patho--logs_path.--support_datastore_emulator=yes|noUtilizza l'emulatore Cloud Datastore (beta) per l'emulazione locale di Datastore.
--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=...Esegui l'override della configurazione thread-safe dell'applicazione. Il valore può essere un valore booleano, nel qual caso l'impostazione thread-safe di tutti i moduli verrà ignorata, o un elenco separato da virgole di
module:threadsafe_override(impostazione predefinita: Nessuno).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 file system distribuito (impostazione predefinita: False).
--watcher_ignore_re=...Stringa regex per specificare i file da ignorare da 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) (impostazione predefinita: None).
--python_startup_args- Gli argomenti resi disponibili allo script specificato in
python_startup_script(valore predefinito: nessuno). --python27_executable_path=...- Il percorso dell'eseguibile python27 per le istanze di runtime python27 (impostazione predefinita: None).
--python_virtualenv_path- Il percorso della directory utilizzata per configurare un ambiente virtuale Python 3 per l'ambiente di esecuzione locale di devappserver per le applicazioni Python 3. Se il percorso non esiste, la directory viene creata, ma non verrà pulita al termine dell'esecuzione di devappserver, consentendo la memorizzazione nella cache tra le invocazioni. Se non è definita, verrà utilizzata una directory temporanea e pulita al termine dell'esecuzione.
--runtime_python_path=...- Il percorso del tuo binario Python. Per eseguire un'app Python su
dev_appserver, specifica questo flag.