Nesta página, você verá como criar um gerenciador de tarefas do App Engine, o
código do worker que processa uma tarefa do App Engine. A fila do Cloud Tasks
envia solicitações HTTP para seu 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.
As solicitações de fila de tarefas do App Engine são enviadas do endereço IP 0.1.0.2
.
Consulte também o Intervalo de IP das solicitações enviadas ao ambiente do App Engine.
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 os 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 de 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 vai presumir que a tarefa falhou e tentará novamente.
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 seu gerenciador pode querer usar.
Esses cabeçalhos são definidos internamente. Se algum desses cabeçalhos estiver presente em uma solicitação de usuário externo para seu app, eles serão substituídos pelos internos, exceto para solicitações de administradores conectados do aplicativo, que têm permissã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 sair dos data centers do Google. Como esse tráfego é transmitido por meio de um mecanismo de comunicação interno do Google, não é possível definir explicitamente o protocolo (por exemplo, HTTP ou HTTPS). A solicitação para o gerenciador, no entanto, parecerá ter usado o protocolo HTTP.
As tarefas podem ser enviadas para gerenciadores de tarefas seguros e não seguros e, em ambientes de execução compatíveis, URIs restritos com login: admin
.
Como as tarefas não são executadas como qualquer usuário, elas não podem ser enviadas 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.