Esta página descreve como usar a API Deferred, um dos serviços agrupados antigos, com o tempo de execução do Python 3 para o ambiente padrão. A sua app pode aceder aos serviços incluídos através do SDK dos serviços do App Engine para Python 3.
Vista geral
Anteriormente, o pacote Deferred google.appengine.ext.deferred
dependia da framework de apps Web no Python 2. Uma vez que a framework de apps Web foi removida no SDK de serviços do App Engine para Python 3, tem de fazer algumas alterações quando atualizar a sua app Python 2 para Python 3.
Ativar a API Deferred
Para ativar a API Deferred para Python 3, já não precisa de definir
builtins.deferred
como on
no ficheiro app.yaml
. Em alternativa, para ativar a API, tem de transmitir use_deferred=True
na chamada para wrap_wsgi_app()
.
Semelhanças e diferenças
Por predefinição, a API Deferred para Python 3 usa o mesmo URL /_ah/queue/deferred
e a mesma fila predefinida
que usava no Python 2. Tenha em atenção que, para as apps que migram para o Cloud Tasks, a fila predefinida não é criada automaticamente e a biblioteca de tarefas diferidas não está disponível.
Se a sua app usar o ponto final /_ah/queue/deferred
predefinido, a utilização de
deferred.defer()
no Python 3
permanece igual à do
Python 2.
Se a sua app usar um URL personalizado para a execução de tarefas diferidas, tem de fazer algumas alterações, uma vez que a classe TaskHandler
no módulo deferred
para Python 2 foi removida na versão Python 3 desta API.
Para definir um URL personalizado para a execução de tarefas diferidas, a app pode substituir 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 pedido WSGI. Em seguida, o método post
pode ser chamado a partir do ponto final personalizado (conforme mostrado nos exemplos do Python 3).
A utilização integral da API Deferred do Python 3, como o encaminhamento de pedidos e o acesso ao dicionário environ
, depende da framework Web para a qual a app está a ser migrada. Compare as alterações de código feitas
do exemplo do Python 2 com os exemplos do Python 3 nas secções seguintes.
Exemplos do Python 3
O exemplo seguinte mostra como executar uma tarefa diferida através de um ponto final predefinido e um ponto final personalizado numa app Flask e numa app Django.
Frasco
Django
Sem qualquer estrutura
Exemplos de código
Para ver os exemplos de código completos deste guia, consulte o GitHub.