ID da 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.
Nesta página, descrevemos como emitir solicitações HTTP(S) do aplicativo do App Engine usando o serviço de busca de URL para ambientes de execução de segunda geração.
Antes de seguir as instruções nesta página, recomendamos que você use soluções idiomáticas de linguagem para emitir solicitações HTTP(S) antes de usar o serviço de busca de URL. O principal caso de uso para utilizar a busca de URL é quando você quer emitir solicitações HTTP(S) para outro aplicativo do App Engine e declarar a identidade do aplicativo nessa solicitação.
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.
Como emitir solicitações HTTP
Para usar o serviço de busca de URL para emitir solicitações HTTP(S) de saída, é preciso chamar a biblioteca
urlfetch
.
Para emitir uma solicitação HTTP de saída, é possível usar qualquer uma das seguintes bibliotecas:
- Para melhorar a portabilidade de código, use a biblioteca padrão do Python
urllib.request
para emitir solicitações HTTP. - Use uma biblioteca de terceiros, como
requests
. Chame explicitamente a biblioteca
urlfetch
e use o métodourlfetch.fetch
.
urllib.request
Importe a biblioteca urllib.request
:
import urllib.request
Em seguida, use urllib.request
para realizar a solicitação GET
:
url = 'http://www.google.com/humans.txt'
try:
result = urllib.request.urlopen(url)
self.response.write(result.read())
except urllib.error.URLError:
logging.exception('Caught exception fetching url')
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:
Após isso, use urlfetch
para realizar 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
:
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 desativar redirecionamentos
Se você estiver usando a busca de URL, o serviço subjacente de busca de URL seguirá até cinco redirecionamentos por padrão. Esses redirecionamentos podem encaminhar informações confidenciais, como cabeçalhos de autorização, para o destino redirecionado. Se o aplicativo não exigir redirecionamentos HTTP, é recomendável que você os desative.
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
.
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 usar a busca de URL para emitir uma solicitação a outro aplicativo do App Engine, seu
aplicativo pode 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. Consulte Como desativar redirecionamentos para orientação sobre como desativar redirecionamentos.
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.