ID de região
O REGION_ID
é um código abreviado que o Google atribui
com base na região que você selecionou ao criar o aplicativo. O código não
corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes
aos códigos de país e estado geralmente usados. Para apps criados após
fevereiro de 2020, o REGION_ID.r
está incluído nos
URLs do App Engine. Para apps existentes criados antes dessa data, o
ID da região é opcional no URL.
Saiba mais sobre IDs de região.
Esta página descreve como emitir solicitações HTTP(S) do seu aplicativo App Engine.
Por padrão, o App Engine usa o serviço de busca de URL para emitir solicitações HTTP(S) de saída. Para mais detalhes sobre os limites de tamanho de solicitação e quais cabeçalhos são enviados em uma solicitação de busca de URL, consulte Solicitações de saída.Se você tiver configurado o acesso VPC sem servidor ou se usar a API Sockets, precisará interromper o processamento de solicitações da busca de URL.
A busca de URL faz com que as solicitações para a rede VPC ou para
a API Sockets falhem. Depois de desativar a busca de URL, a biblioteca Python
padrão processará solicitações HTTP. Se você precisar dos recursos fornecidos pela
busca de URL para solicitações específicas, poderá usar a biblioteca urlfetch
diretamente
para essas solicitações específicas.
Como emitir solicitações HTTP
Para emitir uma solicitação HTTP de saída, use o método urlfetch.fetch
. Para melhorar a portabilidade de código, você também pode usar as bibliotecas padrão do Python urllib
, urllib2
ou httplib
para emitir solicitações HTTP.
Quando você usa essas bibliotecas no App Engine, elas executam solicitações HTTP usando o serviço de busca de URL do App Engine. Você também pode usar a biblioteca requests
de terceiros, desde que a configure para usar URLFetch.
urlfetch
Os snippets a seguir demonstram como executar uma solicitação HTTP GET
básica usando urlfetch
. Primeiro, importe a biblioteca urlfetch
do SDK do App Engine:
Em seguida, use urlfetch
para executar a solicitação GET
:
O snippet a seguir demonstra como executar uma solicitação mais avançada, enviando dados de um formulário da Web por meio de uma solicitação HTTP POST
usando urlfetch
:
urllib2
Os snippets a seguir demonstram como executar uma solicitação HTTP GET
básica usando urllib2
. Primeiro, importe a biblioteca urllib2
:
Em seguida, use urllib2
para executar a solicitação GET
:
solicitações
Para usar as solicitações, você precisará instalar requests
e requests-toolbelt
usando as instruções de classificação.
Depois de instalado, use o módulo requests_toolbelt.adapters.appengine
para configurar solicitações para usar URLFetch:
Depois de configurado, use as solicitações normalmente:
Para mais informações sobre o suporte das solicitações ao Google App Engine, consulte a documentação de urllib3.contrib.appengine
e requests_toolbelt.appengine
Como definir um tempo limite de solicitação
Você pode ajustar o prazo padrão usando a função urlfetch.set_default_fetch_deadline()
. Essa função armazena o novo prazo padrão em uma variável de encadeamento local. Portanto, ela precisa ser configurada para cada solicitação, por exemplo, em um middleware personalizado.
Como emitir solicitações HTTPS
Para emitir uma solicitação HTTPS, defina o parâmetro validate_certificate
como true
ao chamar o método urlfetch.fetch()
.
Como emitir uma solicitação assíncrona
As solicitações HTTP(S) são síncronas por padrão. Para emitir uma solicitação assíncrona, o aplicativo precisa:
- Crie um novo objeto RPC usando
urlfetch.create_rpc()
. Esse objeto representa sua chamada assíncrona em chamadas de método subsequentes; - Chame
urlfetch.make_fetch_call()
para fazer a solicitação. Esse método usa o objeto RPC e o URL do destino da solicitação como parâmetros. - Chame o método
get_result()
do objeto RPC. Durante a solicitação, esse método retorna o objeto de resultado em caso de êxito e cria uma exceção em caso de erro.
Os snippets a seguir demonstram como fazer uma solicitação assíncrona básica a partir de um aplicativo em Python. Primeiro, importe a biblioteca urlfetch
do SDK do App Engine:
Em seguida, use urlfetch
para fazer a solicitação assíncrona:
Como definir um tempo limite de solicitação
Para definir um tempo limite para sua solicitação, defina o parâmetro deadline
do método urlfetch.create_rpc()
ao criar o objeto RPC.
Como usar uma função de retorno de chamada
É possível definir uma função de retorno de chamada para seu objeto de RPC. A função será chamada quando seu aplicativo chamar um método no objeto, como wait()
, checksuccess()
ou get_result()
, que faz com que o objeto aguarde até que a solicitação seja concluída.
Para usar uma função de retorno de chamada ao lidar com o resultado da chamada de busca:
- Crie uma função auxiliar para definir o escopo de callback.
- Crie uma função de gerenciador para lidar com o resultado da chamada de busca.
- Defina o atributo
callback
do objeto RPC para a função auxiliar.
O snippet a seguir demonstra como invocar uma função de retorno de chamada:
Como emitir solicitações para outro aplicativo do App Engine
Ao emitir uma solicitação para outro aplicativo do App Engine, ele
precisa declarar a identidade dele adicionando o cabeçalho X-Appengine-Inbound-Appid
à solicitação.
Se você instruir o serviço de busca de URL a não seguir redirecionamentos, o App Engine
adicionará esse cabeçalho às solicitações automaticamente.
Para instruir o serviço de busca de URL a não seguir redirecionamentos, defina o parâmetro follow_redirects
do método fetch
como False
.
A seguir
Para saber mais sobre o serviço de busca de URL, como os cabeçalhos que são enviados em uma solicitação de busca de URL, consulte Solicitações de saída.