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.org
permitehost.example.org
, mas nãosub.host.example.org
ouexample.org
. Os hosts que começam com**.
permitem subdomínios de qualquer profundidade. Por exemplo,**.example.com
permitehost.example.com
esub.host.example.com
, mas nãoexample.com
. (padrão []) --allow_skipped_files=...
- Fazer que os arquivos especificados no
app.yaml
ouskip_files
identificadoresstatic
possam 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
None
no 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_address
for 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
sequential
ouscattered
(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_path
se 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_appserver
tentará 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|no
Determina se a verificação de host
HTTP
será 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|no
Ativar o console interativo na visualização de administrador (padrão: False).
--enable_sendmail=yes|no
Usa a instalação
Sendmail
do computador local para enviar mensagens de e-mail.--enable_task_running=yes|no
Permite 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_var
está no formatokey=value
, e é possível definir várias variáveis de ambiente. Além deenv_variables
noapp.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).--help
Imprime 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.0
permite 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
,error
ecritical
.--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_HOST
Nome do host de um servidor MySQL em execução usado para armazenamento simulado do Cloud SQL (padrão: localhost).
--mysql_port=MYSQL_PORT
Número da porta de um servidor MySQL em execução usado para armazenamento simulado do Cloud SQL (padrão: 3306).
--mysql_user=MYSQL_USER
Nome de usuário a ser usado ao se conectar ao servidor MySQL especificado em
--mysql_host
e--mysql_port
ou--mysql_socket
(padrão: ).--mysql_password=MYSQL_PASSWORD
Senha a ser usada ao se conectar ao servidor MySQL especificado em
--mysql_host
e--mysql_port
ou--mysql_socket
(padrão: ).--mysql_socket=MYSQL_SOCKET
Caminho 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, como8081
e8082
.--require_indexes=yes|no
Desativa 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:port
de um emulador do Cloud Datastore em execução a quedev_appserver
pode 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_path
se 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_nag
para 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_path
ou--logs_path
.--support_datastore_emulator=yes|no
Usar 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_path
se 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_path
se 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 local do devappserver para aplicativos do Python 3. Se o caminho não existir, o diretório será criado, mas não será limpo no final da execução do devappserver, permitindo o armazenamento em cache entre 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.