O servidor de desenvolvimento local (dev_appserver.py) faz parte dos componentes do App Engine da CLI gcloud. Este tópico fornece informações avançadas sobre a utilização do dev_appserver.py.
Recomendamos que use ferramentas Python padrão, como
virtualenv para criar ambientes isolados e pytest
para executar testes unitários e testes de integração, em vez de depender de
dev_appserver, o servidor de desenvolvimento local fornecido
com o SDK do Google Cloud.
Consulte o artigo Usar o servidor de desenvolvimento local para mais informações sobre os testes locais.
Configure a ferramenta de servidor de desenvolvimento local
Um comando dev_appserver.py de exemplo pode ter o seguinte aspeto:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES
Substitua o seguinte:
- CLOUD_SDK_ROOT com o caminho para o diretório raiz
onde instalou a CLI gcloud. O diretório predefinido é
./google-cloud-sdk/. - OPTION com uma flag suportada pelo servidor de desenvolvimento local.
- FILES especifica um ou mais ficheiros
app.yaml, um por serviço, para o argumento posicionalyaml_path.
Para ver uma lista completa de opções, execute o seguinte:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h
Opções comuns
As opções mais comuns são as seguintes:
--admin_host=ADMIN_HOST- Nome do anfitrião ao qual a consola de administração do servidor de desenvolvimento local deve ser associada (predefinição: localhost).
--admin_port=ADMIN_PORT- Porta à qual a consola de administração do servidor de desenvolvimento local deve ser associada (predefinição: 8000).
--addn_host=ADDN_HOST- Este argumento permite-lhe adicionar à lista de autorizações valores de cabeçalho do anfitrião HTTP adicionais, para que o servidor possa ser tornado acessível através de um proxy, sem ter de desativar a verificação do anfitrião (consulte
--enable_host_checking). Os anfitriões adicionais que começam por*.permitem todos os subdomínios. Por exemplo,*.example.orgpermitehost.example.org, mas nãosub.host.example.orgnemexample.org. Os anfitriões que começam por**.permitem subdomínios de qualquer profundidade. Por exemplo,**.example.compermitehost.example.comesub.host.example.com, mas nãoexample.com. (predefinição: []) --allow_skipped_files=...- Torne os ficheiros especificados nos controladores
app.yamlskip_filesoustaticlegíveis pela aplicação (predefinição: False). -A APP_ID, --application=...- Defina a aplicação, substituindo o valor da aplicação
do ficheiro
app.yaml(predefinição: Nenhum). --appidentity_email_address=...- Endereço de email associado a uma conta de serviço que tem uma chave transferível.
Pode ser
Nonepara nenhuma identidade de aplicação local (predefinição: None). --appidentity_private_key_path=...- Caminho para o ficheiro de chave privada associado à conta de serviço (formato
.pem). Tem de ser definido seappidentity_email_addressestiver definido (predefinição: nenhum). --api_host=API_HOST- Nome do anfitrião ao qual o servidor da API deve ser associado (predefinição: localhost).
--api_port=API_PORT- Porta à qual o servidor para chamadas API deve ser associado (predefinição: 0).
--auth_domain=...- Nome do domínio de autorização a usar (predefinição:
gmail.com). --auto_id_policy=...- Descontinuado. Como o arquivo de dados local atribui IDs automáticos. As opções são
sequentialouscattered(predefinição:scattered). --automatic_restart=...- Reinicie as instâncias automaticamente quando os ficheiros relevantes para o respetivo módulo forem alterados (predefinição: True).
--blobstore_path=...- Caminho para o diretório usado para armazenar conteúdos de objetos binários grandes
(predefinição para um subdiretório de
--storage_pathse não estiver definido) (predefinição: Nenhum). --clear_datastore=yes|no- Limpa os dados da base de dados e os ficheiros do histórico antes de iniciar o servidor Web (predefinição:
no). --clear_search_indexes...- Limpe os índices de pesquisa (predefinição: False).
--custom_entrypoint=...Especifique um ponto de entrada para módulos de tempo de execução personalizados. Isto é necessário quando esses módulos estão presentes. Inclua
{port}na string (sem aspas) para transmitir o número da porta como um argumento (predefinição: ). Por exemplo:--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"--datastore_consistency_policy {consistent,random,time}A política a aplicar quando decidir se uma gravação da base de dados deve aparecer em consultas globais (predefinição: tempo).
--datastore_emulator_cmd=...O caminho para um script que invoca o emulador do Cloud Datastore. Se estiver vazio, o
dev_appservertenta encontrar o emulador do Datastore no Google Cloud SDK (predefinição: Nenhum).--datastore_emulator_port=...O número da porta em que o dev_appserver deve iniciar o emulador do Cloud Datastore (predefinição: 0).
--datastore_path=...O caminho a usar para o ficheiro de dados do armazenamento de dados local. O servidor cria este ficheiro se não existir.
--default_gcs_bucket_name=...Nome do contentor do Cloud Storage predefinido (predefinição: nenhum).
--dev_appserver_log_level {debug,info,warning,critical,error}O nível de registo abaixo do qual as mensagens de registo geradas pelo servidor de desenvolvimento não são apresentadas na consola (este sinalizador é mais útil para diagnosticar problemas no
dev_appserver.pydo que no código da aplicação) (predefinição: info).--enable_host_checking=yes|noDetermina se deve aplicar a
HTTPverificação de anfitriões para módulos de aplicações, servidor da API e servidor de administração. A verificação de anfitriões protege contra ataques de revinculação de DNS. Desative-a apenas depois de compreender as implicações de segurança (predefinição: verdadeiro).--enable_console=yes|noAtivar consola interativa na vista de administrador (predefinição: False).
--enable_sendmail=yes|noUsa a instalação do
Sendmailno computador local para enviar mensagens de email.--enable_task_running=yes|noPermite que o servidor de programação execute tarefas push (predefinição:
yes). Se especificarno, o servidor não executa tarefas push.--env_var=...Variável de ambiente definida pelo utilizador para o processo de tempo de execução local. Cada
env_varestá no formato dekey=valuee pode definir várias variáveis de ambiente. Além deenv_variablesnoapp.yaml, esta flag permite definir variáveis de ambiente adicionais para processos locais.Por exemplo:
--env_var KEY_1=val1 --env_var KEY_2=val2--grpc_api_port...Porta na qual o servidor da API
gRPCescuta (predefinição:0).--helpImprime uma mensagem útil e, em seguida, fecha.
--host=...O endereço do anfitrião a usar para o servidor. Pode ter de definir esta opção para poder aceder ao servidor de desenvolvimento a partir de outro computador na sua rede. Um endereço de
0.0.0.0permite o acesso ao anfitrião local e o acesso ao IP ou ao nome de anfitrião (predefinição:localhost).--log_level=...O nível de registo mais baixo no qual as mensagens de registo são escritas na consola; as mensagens do nível de registo especificado ou superior são apresentadas. Os valores possíveis são
debug,info,warning,errorecritical.--logs_path=...Por predefinição, os registos do servidor de desenvolvimento local são armazenados apenas na memória. Especifique esta opção quando executar o servidor de desenvolvimento local para armazenar os registos num ficheiro, o que torna os registos disponíveis em todos os reinícios do servidor. Tem de especificar o caminho do diretório e o nome de um ficheiro de base de dados SQLite. É criado um ficheiro de base de dados SQLite com o nome especificado se o ficheiro ainda não existir.
Por exemplo:
--logs_path=/home/logs/boglogs.db--max_module_instances=...O número máximo de instâncias de tempo de execução que podem ser iniciadas para um módulo específico. O valor pode ser um número inteiro, caso em que todos os módulos estão limitados ao número de instâncias ou a uma lista separada por vírgulas de
module:max_instances(predefinição: Nenhum). Por exemplo:default:5,backend:3--mysql_host=MYSQL_HOSTNome do anfitrião de um servidor MySQL em execução usado para o armazenamento simulado do Cloud SQL (predefinição: localhost).
--mysql_port=MYSQL_PORTNúmero da porta de um servidor MySQL em execução usado para armazenamento simulado do Cloud SQL (predefinição: 3306).
--mysql_user=MYSQL_USERNome de utilizador a usar ao estabelecer ligação ao servidor MySQL especificado em
--mysql_hoste--mysql_portou--mysql_socket(predefinição: ).--mysql_password=MYSQL_PASSWORDPalavra-passe a usar ao estabelecer ligação ao servidor MySQL especificado em
--mysql_hoste--mysql_portou--mysql_socket(predefinição: ).--mysql_socket=MYSQL_SOCKETCaminho para um ficheiro de socket Unix a usar ao ligar a um servidor MySQL em execução usado para armazenamento simulado do Cloud SQL (predefinição: nenhum).
--port=...O número da porta a usar para o servidor. A predefinição é
8080. Se forem iniciados vários servidores, como para serviços, são-lhes atribuídas portas subsequentes, como8081e8082.--require_indexes=yes|noDesativa a geração automática de entradas no ficheiro
index.yaml. Em alternativa, quando a aplicação faz uma consulta que requer que o respetivo índice seja definido no ficheiro e a definição do índice não é encontrada, é gerada uma exceção, semelhante ao que aconteceria quando executada no App Engine (predefinição:no).--runtime=...Especifique os tempos de execução predefinidos que quer usar. Para ver a lista dos tempos de execução suportados, consulte o calendário de apoio técnico do tempo de execução.
--running_datastore_emulator_host=...Substitui a variável de ambiente DATASTORE_EMULATOR_HOST, o que significa o
hostname:portde um emulador do Cloud Datastore em execução ao qualdev_appserverpode estabelecer ligação (predefinição: Nenhum).--search_indexes_path=...Caminho para um ficheiro usado para armazenar índices de pesquisa (predefinição para um ficheiro no
--storage_pathse não estiver definido) (predefinição:Nenhum).--skip_sdk_update_check=...Ignora a verificação de atualizações do SDK (se for falso, usa
.appcfg_nagpara decidir) (predefinição: falso).--show_mail_body=...Regista o conteúdo dos emails enviados através da API Mail (predefinição: False).
--smtp_allow_tls...Permitir a utilização de TLS quando o servidor SMTP anuncia compatibilidade com TLS (ignorada se --smtp_host não estiver definido) (predefinição: True).
--smtp_host=...O nome do anfitrião do servidor SMTP a usar para enviar mensagens de email.
--smtp_port=...O número da porta do servidor SMTP a usar para enviar mensagens de email.
--smtp_user=...O nome de utilizador a usar com o servidor SMTP para enviar mensagens de email.
--smtp_password=...A palavra-passe a usar com o servidor SMTP para enviar mensagens de email.
--storage_path=...Caminho no qual todos os ficheiros locais, como o Datastore, o Blobstore, os ficheiros do Cloud Storage e os registos, são armazenados, a menos que sejam substituídos por
--datastore_path,--blobstore_pathou--logs_path.--support_datastore_emulator=yes|noUse o emulador do Cloud Datastore (beta) para a emulação local do armazenamento de dados.
--ssl_certificate_path=...Caminho para o certificado SSL. Também tem de fornecer
--ssl_certificate_key_pathse usar esta opção (predefinição: None).--ssl_certificate_key_path=...Caminho para a chave privada SSL correspondente. Também tem de fornecer
--ssl_certificate_pathse usar esta opção (predefinição: None).--threadsafe_override=...Substituir a configuração de segurança de threads da aplicação. O valor pode ser um booleano, caso em que a definição de segurança de threads de todos os módulos é substituída, ou uma lista separada por vírgulas de
module:threadsafe_override(predefinição: Nenhum).Por exemplo:
default:False,backend:True--use_mtime_file_watcher=...Use a sondagem mtime para detetar alterações ao código fonte. É útil se estiver a modificar o código a partir de um computador remoto através de um sistema de ficheiros distribuído (predefinição: False).
--watcher_ignore_re=...String de regex para especificar os ficheiros a serem ignorados pelo observador de ficheiros. (predefinição: Nenhum)
Opções de comando específicas do tempo de execução do Python:
--python_startup_script- O script a executar no arranque de novas instâncias do tempo de execução do Python (útil para ferramentas como depuradores) (predefinição: Nenhum).
--python_startup_args- Os argumentos disponibilizados ao script especificado em
python_startup_script(predefinição: Nenhum). --python27_executable_path=...- O caminho para o executável python27 para instâncias de tempo de execução python27 (predefinição: Nenhum).
--python_virtualenv_path- O caminho para o diretório que é usado para configurar um ambiente virtual do Python 3 para o ambiente de execução do devappserver local para aplicações Python 3. Se o caminho não existir, o diretório é criado, mas não é limpo no final da execução do devappserver, o que permite o armazenamento em cache entre invocações. Se não for definido, é usado um diretório temporário e limpo no final da execução.
--runtime_python_path=...- O caminho para o ficheiro binário do Python. Para executar uma app Python no
dev_appserver, especifique esta flag.