Nesta página, descrevemos como usar a API Deferred, um dos serviços no pacote legados, com o ambiente de execução do Python 3 para o ambiente padrão. O aplicativo pode acessar os serviços incluídos pelo SDK de serviços do App Engine para Python 3.
Visão geral
Antes, o pacote adiado google.appengine.ext.deferred
dependia do framework do webapp no Python 2. Como o framework do webapp foi
removida no SDK de serviços do App Engine para Python 3, você precisa
fazer algumas alterações ao fazer upgrade do aplicativo Python 2 para Python 3.
Como ativar a API Deferred
Para ativar a API Deferred para Python 3, não é mais necessário definir
builtins.deferred
como on
no arquivo app.yaml
. Para ativar a API, você precisa transmitir
use_deferred=True
na chamada para wrap_wsgi_app()
.
Semelhanças e diferenças
Por padrão, a API Deferred para Python 3 usa o mesmo URL /_ah/queue/deferred
e a mesma fila padrão
que no Python 2. Para aplicativos que estão migrando para o Cloud Tasks, a fila padrão
não é criada automaticamente
e a biblioteca de tarefas adiadas não está disponível.
Se o aplicativo usar o endpoint /_ah/queue/deferred
padrão, o uso de
deferred.defer()
no Python 3 permanecerá igual ao
Python 2.
Se o aplicativo usar um URL personalizado para a execução de tarefas adiadas, será necessário
fazer algumas alterações, já que a classe TaskHandler
no módulo deferred
do Python 2
foi removida na versão do Python 3 dessa API.
Para definir um URL personalizado para execução de tarefas adiadas, o app pode modificar
o método post
ou run_from_request
na
classe deferred.Handler
(anteriormente deferred.TaskHandler
no Python 2) e transmitir o parâmetro environ
,
que representa um dicionário que contém parâmetros de solicitação WSGI. O método post
pode ser
chamado
a partir do endpoint personalizado, conforme mostrado nas amostras do Python 3.
O uso completo da API Deferred do Python 3, como o encaminhamento de solicitações e
o acesso ao dicionário environ
,
depende do framework da Web para o qual o aplicativo está migrando. Compare as alterações de código feitas
no exemplo do Python 2 com os do Python 3 nas seções a seguir.
Exemplos do Python 3
O exemplo a seguir mostra como executar uma tarefa adiada usando um endpoint padrão e um endpoint personalizado em um aplicativo Flask e Django.
Flask
Django
Sem framework
Amostras de código
Para ver os exemplos de código completos deste guia, consulte o GitHub.