O servidor de desenvolvimento local (dev_appserver.py) faz parte dos componentes
do App Engine da gcloud CLI. Neste tópico, fornecemos informações avançadas
sobre o uso de dev_appserver.py.
Recomendamos que você use ferramentas padrão do Python, como
virtualenv para criar ambientes isolados e pytest
para executar testes de unidade e de integração, em vez de depender do
dev_appserver, o servidor de desenvolvimento local fornecido
com o SDK Google Cloud.
Saiba mais sobre testes locais em Como usar o servidor de desenvolvimento local.
Configurar a ferramenta de servidor de desenvolvimento local
Um exemplo de comando dev_appserver.py pode ter a seguinte aparência:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES
Substitua:
- CLOUD_SDK_ROOT pelo caminho para o diretório raiz em que você instalou a Google Cloud CLI. O diretório padrão é
./google-cloud-sdk/. - OPTION por uma sinalização compatível com o servidor de desenvolvimento local.
- FILES especifica um ou mais arquivos
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:
--admin_host=ADMIN_HOST- Nome do host a que o console de administração do servidor de desenvolvimento local precisa se vincular (padrão: localhost).
--admin_port=ADMIN_PORT- Porta a que o console de administração do servidor de desenvolvimento local precisa se vincular (padrão: 8000).
--addn_host=ADDN_HOST- Esse argumento permite que você adicione outros valores de cabeçalho HTTP Host à lista de permissões, para que
o servidor possa ser acessível por trás de um proxy, sem ter que
desativar a verificação do host (consulte
--enable_host_checking). Outros hosts que começam com*.permitem todos os subdomínios. Por exemplo,*.example.orgpermitehost.example.org, mas nãosub.host.example.orgouexample.org. Os hosts que começam com**.permitem subdomínios de qualquer profundidade. Por exemplo,**.example.compermitehost.example.comesub.host.example.com, mas nãoexample.com. (padrão []) --allow_skipped_files=...- Fazer que os arquivos especificados no
app.yamlouskip_filesidentificadoresstaticpossam ser lidos pelo aplicativo (padrão: False). -A APP_ID, --application=...- Definir o aplicativo substituindo o valor dele
no arquivo
app.yaml(padrão: None). --appidentity_email_address=...- O endereço de e-mail associado a uma conta de serviço que tem uma chave para download.
Pode ser
Noneno caso de nenhuma identidade de aplicativo local (padrão: None). --appidentity_private_key_path=...- Caminho para o arquivo da chave privada associado à conta de serviço (formato
.pem). Precisará ser definido seappidentity_email_addressfor definido (padrão: None). --api_host=API_HOST- Nome do host a que o servidor de API será vinculado (padrão: localhost).
--api_port=API_PORT- Porta a que o servidor de chamadas de API precisa se vincular (padrão: 0).
--auth_domain=...- Nome do domínio de autorização a ser usado (padrão
gmail.com). --auto_id_policy=...- Obsoleto. Como o repositório de dados local atribui IDs automáticos. As opções são
sequentialouscattered(padrão:scattered). --automatic_restart=...- Reiniciar instâncias automaticamente quando arquivos relevantes para o módulo são alterados (padrão: True).
--blobstore_path=...- Caminho para o diretório usado para armazenar o conteúdo de blob.
O padrão é um subdiretório de
--storage_pathse não definido (padrão: None). --clear_datastore=yes|no- Limpar os arquivos de histórico e repositório de dados antes de iniciar o servidor da Web (padrão:
no). --clear_search_indexes...- Limpar os índices de pesquisa (padrão: False).
--custom_entrypoint=...Especificar um ponto de entrada para módulos de tempo de execução personalizados. Isso é necessário quando esses serviços estão presentes. Inclua
{port}na string (sem aspas) para transmitir o número da porta como argumento (padrão: ). Por exemplo:--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"--datastore_consistency_policy {consistent,random,time}A política a ser aplicada ao decidir se uma gravação do repositório de dados aparecerá em consultas globais (padrão: time).
--datastore_emulator_cmd=...O caminho para um script que invoca o emulador do Cloud Datastore. Se deixado em branco,
dev_appservertentará encontrar um emulador do repositório de dados no SDK do Google Cloud (padrão: None).--datastore_emulator_port=...O número da porta em que o dev_appserver precisa iniciar o emulador do Cloud Datastore em (padrão: 0).
--datastore_path=...O caminho a ser usado para o arquivo de dados do repositório de dados local. O servidor criará esse arquivo se ele não existir.
--default_gcs_bucket_name=...Nome padrão do bucket do Cloud Storage (padrão: None).
--dev_appserver_log_level {debug,info,warning,critical,error}O nível de registro abaixo do qual as mensagens de registro geradas pelo servidor de desenvolvimento não são exibidas no console. Essa sinalização é mais útil para diagnosticar problemas em
dev_appserver.py, em vez de no código do aplicativo) (padrão: info).--enable_host_checking=yes|noDetermina se a verificação de host
HTTPserá aplicada a módulos de aplicativos, servidor da API e servidor do administrador. A verificação do host protege contra ataques de revinculação de DNS e é desativada somente depois de as implicações de segurança serem entendidas (padrão: True).--enable_console=yes|noAtivar o console interativo na visualização de administrador (padrão: False).
--enable_sendmail=yes|noUsa a instalação
Sendmaildo computador local para enviar mensagens de e-mail.--enable_task_running=yes|noPermite que o servidor de desenvolvimento execute tarefas push (padrão:
yes). Se você especificar ono, o servidor não executará tarefas push.--env_var=...Variável de ambiente definida pelo usuário para o processo do ambiente de execução local. Cada
env_varestá no formatokey=value, e é possível definir várias variáveis de ambiente. Além deenv_variablesnoapp.yaml, essa sinalização permite definir variáveis de ambiente extras para processos locais.Por exemplo:
--env_var KEY_1=val1 --env_var KEY_2=val2--grpc_api_port...Porta em que o servidor de API
gRPCé capaz de detectar (padrão:0).--helpImprime uma mensagem útil e é encerrado.
--host=...O endereço de host a ser usado com o servidor. É preciso configurá-lo para acessar o servidor de desenvolvimento a partir de outro computador da rede. Um endereço de
0.0.0.0permite acesso ao localhost e ao IP ou nome do host (padrão:localhost).--log_level=...O nível de geração de registros mais baixo em que as mensagens de registro serão escritas no console. As mensagens do nível de geração de registros especificado ou superior serão exibidas. Os valores possíveis são
debug,info,warning,errorecritical.--logs_path=...Por padrão, os registros do servidor de desenvolvimento local são armazenados somente na memória. Especifique esta opção ao executar o servidor de desenvolvimento local para armazenar os registros em um arquivo, o que disponibiliza os registros nas reinicializações do servidor. É preciso especificar o caminho do diretório e o nome de um arquivo de banco de dados SQLite. Se ainda não existir, um arquivo SQLite será criado com o nome especificado.
Exemplo:
--logs_path=/home/logs/boglogs.db--max_module_instances=...Número máximo de instâncias de ambiente de execução que podem ser iniciadas para um determinado módulo. O valor pode ser um número inteiro, o que limita todos os módulos ao número de instâncias ou uma lista separada por vírgulas de
module:max_instances(padrão: None). Por exemplo:default:5,backend:3--mysql_host=MYSQL_HOSTNome do host de um servidor MySQL em execução usado para armazenamento simulado do Cloud SQL (padrão: localhost).
--mysql_port=MYSQL_PORTNúmero da porta de um servidor MySQL em execução usado para armazenamento simulado do Cloud SQL (padrão: 3306).
--mysql_user=MYSQL_USERNome de usuário a ser usado ao se conectar ao servidor MySQL especificado em
--mysql_hoste--mysql_portou--mysql_socket(padrão: ).--mysql_password=MYSQL_PASSWORDSenha a ser usada ao se conectar ao servidor MySQL especificado em
--mysql_hoste--mysql_portou--mysql_socket(padrão: ).--mysql_socket=MYSQL_SOCKETCaminho para um arquivo de soquete Unix que será usado ao se conectar a um servidor MySQL em execução usado para armazenamento simulado do Cloud SQL (padrão: None).
--port=...O número da porta que será usado com o servidor. O padrão é
8080. Se vários servidores forem iniciados, por exemplo, para serviços, serão atribuídas portas subsequentes, como8081e8082.--require_indexes=yes|noDesativa a geração automática de entradas no arquivo
index.yaml. Em vez disso, quando o aplicativo realizar uma consulta que exija a definição do índice no arquivo e esta não for encontrada, uma exceção será emitida como aconteceria durante a execução no App Engine (padrão:no).--runtime=...Especificar os tempos de execução padrão que você gostaria de usar. Para ver a lista de ambientes de execução compatíveis, consulte a Programação do suporte ao ambiente de execução.
--running_datastore_emulator_host=...Modifica a variável de ambiente DATASTORE_EMULATOR_HOST, que representa o
hostname:portde um emulador do Cloud Datastore em execução a quedev_appserverpode se conectar (padrão: nenhum).--search_indexes_path=...Caminho para um arquivo usado para armazenar índices de pesquisa. (padrão será um arquivo em
--storage_pathse não estiver definido) (padrão: nenhum).--skip_sdk_update_check=...Pular a verificação de atualizações do SDK. Se for falso, use
.appcfg_nagpara decidir (padrão: False).--show_mail_body=...Registra o conteúdo de e-mails enviados usando a API Mail (padrão: False).
--smtp_allow_tls...Permitir que o TLS seja usado quando o servidor SMTP anunciar o suporte a TLS (ignorado se --smtp_host não estiver definido) (padrão: True).
--smtp_host=...O nome do host do servidor SMTP que será usado para enviar mensagens de e-mail.
--smtp_port=...O número da porta do servidor SMTP a ser usado para enviar mensagens de e-mail.
--smtp_user=...O nome de usuário a ser usado com o servidor SMTP para enviar mensagens de e-mail.
--smtp_password=...A senha que deve ser usada com o servidor SMTP para enviar mensagens de e-mail.
--storage_path=...O caminho em que todos os arquivos locais, como o Datastore, o Blobstore, os arquivos e registros do Cloud Storage, serão armazenados, a menos que sejam substituídos por
--datastore_path,--blobstore_pathou--logs_path.--support_datastore_emulator=yes|noUsar o emulador do Cloud Datastore (beta) para emulação de repositório de dados local.
--ssl_certificate_path=...Caminho para o certificado SSL. Também precisará fornecer
--ssl_certificate_key_pathse essa opção estiver sendo usada (padrão: None).--ssl_certificate_key_path=...Caminho para a chave privada SSL correspondente. Também precisará fornecer
--ssl_certificate_pathse essa opção estiver sendo usada (padrão: None).--threadsafe_override=...Substituir a configuração de threadsafe do aplicativo. O valor pode ser um booleano, o que substituirá a configuração de threadsafe de todos os módulos, ou uma lista separada por vírgulas de
module:threadsafe_override(padrão: None).Exemplo:
default:False,backend:True--use_mtime_file_watcher=...Usar a pesquisa de mtime para detectar alterações no código-fonte. Isso é útil para modificar o código de uma máquina remota usando um sistema de arquivos distribuído (padrão: False).
--watcher_ignore_re=...String do regex para especificar arquivos a serem ignorados pelo filewatcher. (padrão: None)
Opções de comando específicas do ambiente de execução Python:
--python_startup_script- Script a ser executado na inicialização de novas instâncias de ambiente de execução do Python. Útil para ferramentas como depuradores (padrão: None).
--python_startup_args- Os argumentos disponibilizados para o script especificado em
python_startup_script(padrão: None). --python27_executable_path=...- O caminho para o executável python27 das instâncias de ambiente de execução do python27 (padrão: None).
--python_virtualenv_path- O caminho para o diretório usado para configurar um ambiente virtual do Python 3 para o ambiente de execução do devappserver local para aplicativos do Python 3. Se o caminho não existir, o diretório será criado, mas não será limpo ao final da execução do devappserver, permitindo o armazenamento em cache entre as invocações. Se não for definido, um diretório temporário será usado e limpo no final da execução.
--runtime_python_path=...- O caminho para o binário do Python. Para executar um
app Python no
dev_appserver, especifique esse flag.