Por padrão, o ambiente de execução do Python 2.7
usa o serviço de busca de URL
para processar solicitações HTTP(S) de saída, mesmo se você usar as bibliotecas Python
urllib
, urllib2
ou httplib
para emitir essas solicitações. A busca de URL não processa
solicitações da biblioteca requests
a menos que você a
ative explicitamente.
O ambiente de execução do Python 3 não precisa de um serviço intermediário para processar solicitações
de saída. Se você quiser migrar das APIs URL Fetch,
mas ainda precisar de funcionalidade semelhante, migre essas solicitações para usar
uma biblioteca Python padrão, como o
requests
biblioteca.
Principais diferenças entre a busca de URL e as bibliotecas Python padrão
As classes tamanho limite e cotas para solicitações processadas pela busca de URL são diferentes dessas mesmas classes para solicitações que não são processadas pela busca de URL.
Com a busca de URL, quando o app envia uma solicitação para outro app do App Engine, a busca de URL adiciona o cabeçalho de solicitação
X-Appengine-Inbound-Appid
para confirmar a identidade do app. O app que recebe a solicitação pode usar a identidade para determinar se precisa processá-la.Esse cabeçalho só estará disponível em solicitações enviadas do app se usar a busca de URL. O cabeçalho será removido pelo App Engine se você ou um terceiro adicioná-lo a uma solicitação.
Para saber informações sobre como declarar e verificar a identidade sem usar a busca de URL, consulte Como migrar a identidade de app para tokens de ID do OIDC.
Para ver um exemplo de como usar o cabeçalho de solicitação para verificar a identidade do aplicativo de chamada quando as solicitações são enviadas entre aplicativos do App Engine, consulte a Amostra de solicitação do App Engine para o App Engine.
É possível usar a busca de URL para definir um tempo limite padrão para todas as solicitações. A maioria das bibliotecas do Python 3, como
requests
eurllib
, tem o tempo limite padrão definido comoNone
. Por isso, atualize cada solicitação que seu código faz para especificar um tempo limite.
Visão geral do processo de migração
Se seu app usa APIs de busca de URL para fazer solicitações, atualize seu código para usar uma biblioteca Python padrão. Recomendamos que você especifique um tempo limite para cada solicitação.
Teste as solicitações de saída no servidor de desenvolvimento local.
Configure seu app para ignorar a busca de URL quando executado no App Engine.
Implante o app.
Como substituir APIs de busca de URL por uma biblioteca Python
Se você ainda não estiver usando uma biblioteca Python padrão para emitir solicitações de saída, escolha uma biblioteca e adicione-a às dependências do app.
Por exemplo, para usar a biblioteca de solicitações, crie um arquivo
requirements.txt
na mesma pasta do arquivoapp.yaml
e adicione a seguinte linha:requests==2.24.0
Para compatibilidade com Python 2, recomendamos fixar a biblioteca
requests
na versão 2.24.0. Quando você implanta o app, o App Engine faz o download de todas as dependências definidas no arquivorequirements.txt
.Para desenvolvimento local, recomendamos que você instale as dependências em um ambiente virtual como venv.
Pesquise seu código para qualquer uso do módulo
google.appengine.api.urlfetch
e o atualize para usar a biblioteca Python.
Como fazer solicitações HTTPS simples
No exemplo a seguir, mostramos como fazer uma solicitação HTTPS padrão usando a biblioteca
requests
:
Como fazer solicitações HTTPS assíncronas
No exemplo a seguir, mostramos como fazer uma solicitação HTTPS assíncrona usando a biblioteca
requests
:
Como testar localmente
Se você atualizou qualquer solicitação de saída, execute o app do no servidor de desenvolvimento local e confirme se as solicitações foram bem-sucedidas.
Como ignorar a busca de URL
Para impedir que a busca de URL processe solicitações ao implantar o app no App Engine:
No seu arquivo
app.yaml
, defina a variável de ambienteGAE_USE_SOCKETS_HTTPLIB
como qualquer valor. O valor pode ser qualquer valor (inclusive uma string vazia). Exemplo:env_variables: GAE_USE_SOCKETS_HTTPLIB : ''
Se você ativou a busca de URL para processar solicitações enviadas da biblioteca
requests
, remova as solicitaçõesAppEngineAdapter
do seu app.Por exemplo, remova
requests_toolbelt.adapters.appengine
do seu arquivoappengine_config.py
erequests_toolbelt.adapters.appengine.monkeypatch()
dos seus arquivos Python.
Mesmo que você ignore a busca de URL conforme descrito nas etapas anteriores, seu app ainda poderá usar a API de busca de URL.
Implantar o app
Quando estiver pronto para implantar o aplicativo, você deverá:
Teste o aplicativo no App Engine.
Acesse a página "Cotas" do App Engine no Console do Google Cloud para confirmar que seu app não está fazendo chamadas à API de busca de URL.
Se o aplicativo for executado sem erros, use a divisão de tráfego para aumentar gradualmente o tráfego de seu aplicativo atualizado. Monitore de perto o aplicativo em busca de problemas antes de direcionar mais tráfego para o aplicativo atualizado.