Nesta página, demonstramos como criar um gerenciador de tarefas do App Engine, que é o código do worker que manipula uma tarefa do App Engine. A fila do Cloud Tasks envia solicitações HTTP para o gerenciador de tarefas. Após a conclusão do processamento, o gerenciador precisa enviar um código de status HTTP entre 200
e 299
de volta à fila. Qualquer outro valor indica que a tarefa falhou. Nesse caso, a fila tenta executar novamente a tarefa.
C#
Python
Java
PHP
Go
Node.js
Ruby
Tempo limite
As tarefas do App Engine têm tempos limite específicos que dependem do tipo de escalonamento do serviço que as executa.
Para serviços do worker em execução no ambiente padrão:
- Escalonamento automático: o processamento de tarefas precisa terminar em 10 minutos.
- Escalonamento manual e básico: as solicitações podem ser executadas em até 24 horas.
Para serviços do worker em execução no ambiente flexível: todos os tipos têm um tempo limite de 60 minutos.
Se o gerenciador perder o prazo, a fila concluirá que a tarefa falhou e tentará nova execução.
Como ler cabeçalhos de solicitação de tarefas do App Engine
As solicitações enviadas ao gerenciador do App Engine por uma fila do Cloud Tasks têm cabeçalhos especiais, que contêm informações específicas da tarefa que o gerenciador talvez queira usar.
Esses cabeçalhos são definidos internamente. Se algum desses cabeçalhos estiver presente em uma solicitação de usuário externo para o app, eles serão substituídos pelos internos, exceto para solicitações de administradores registrados do aplicativo, que têm autorização para definir cabeçalhos para fins de teste.
As solicitações de tarefas do App Engine sempre contêm os seguintes cabeçalhos:
Cabeçalho | Descrição |
---|---|
X-AppEngine-QueueName |
O nome da fila. |
X-AppEngine-TaskName |
O nome abreviado da tarefa ou, se nenhum nome foi especificado na criação, um código exclusivo gerado pelo sistema. Esse é o valor de "my-task-id" no nome completo da tarefa, ou seja, task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id. |
X-AppEngine-TaskRetryCount |
O número de novas tentativas para a tarefa. Para a primeira tentativa, esse valor é 0 . Esse número inclui tentativas em que a tarefa falhou por falta de instâncias disponíveis e nunca chegou à fase de execução. |
X-AppEngine-TaskExecutionCount |
O número total de vezes em que a tarefa recebeu uma resposta do gerenciador. Como o Cloud Tasks exclui a tarefa depois que uma resposta bem-sucedida foi recebida, todas as respostas anteriores do gerenciador falharam. Esse número não inclui falhas por causa da falta de instâncias disponíveis. |
X-AppEngine-TaskETA |
O horário de agendamento da tarefa, especificado em segundos desde 1º de janeiro de 1970. |
Se encontrar algum dos cabeçalhos listados acima, o gerenciador de solicitações saberá que se trata de uma solicitação do Cloud Tasks.
Além disso, as solicitações do Cloud Tasks podem conter os seguintes cabeçalhos:
Cabeçalho | Descrição |
---|---|
X-AppEngine-TaskPreviousResponse |
O código de resposta HTTP da tentativa anterior. |
X-AppEngine-TaskRetryReason |
O motivo para tentar novamente a tarefa. |
X-AppEngine-FailFast |
Informa que uma tarefa falhará imediatamente se uma instância existente não estiver disponível. |
Roteamento direcionado
Nas tarefas do App Engine, a fila e o gerenciador de tarefas são executados no mesmo projeto do Cloud. O tráfego é criptografado durante o transporte e nunca sai dos datacenters do Google. Como esse tráfego transita por um mecanismo interno de comunicação do Google, não é possível definir explicitamente o protocolo, por exemplo, HTTP ou HTTPS. No entanto, a solicitação para o gerenciador parecerá ter usado o protocolo HTTP.
As tarefas podem ser enviadas para proteger gerenciadores de tarefas, gerenciadores de tarefas não seguros e, em ambientes de execução compatíveis, restringidos com login: admin
. Como as tarefas não são executadas como qualquer usuário, elas não podem ser despachadas para URIs restritos com login: required
.
Os envios de tarefas também não seguem redirecionamentos.
A seguir
- Saiba mais sobre tarefas na referência da API RPC.
- Saiba mais sobre tarefas na referência da API REST.