Nesta página, demonstramos como criar um gerenciador de tarefas do App Engine, que é o
código do worker que processa uma tarefa do App Engine. O Cloud Tasks
do Google Cloud 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.
As solicitações da fila de tarefas do App Engine são enviadas do endereço IP 0.1.0.2
.
Consulte também o
Intervalo de IP para solicitações enviadas ao ambiente do App Engine.
C#
Go
Java
Node.js
PHP
Python
Ruby
Tempo limite
As tarefas do App Engine têm tempos limite específicos que dependem 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 60 minutos tempo limite.
Se o gerenciador perder o prazo, a fila assumirá que a tarefa falhou e as novas tentativas.
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 um solicitação de usuário externo para seu app, elas serão substituídas pelas internas. exceto para solicitações de administradores conectados do aplicativo, que estã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 my-task-id no nome completo da tarefa. Por exemplo, 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 da 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 de vezes que a tarefa foi executada e 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 de uma falta de instâncias disponíveis. O X-AppEngine-TaskExecutionCount pode ser igual a X-AppEngine-TaskRetryCount se for atualizado antes da tentativa de execução. |
X-AppEngine-TaskETA |
O horário de agendamento da tarefa, especificado em segundos desde 1º de janeiro de 1970. |
Caso seu gerenciador de solicitações encontre algum dos cabeçalhos listados anteriormente, ele pode presumir que a 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 Google Cloud. O tráfego é criptografado durante o transporte e nunca que saem dos data centers 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 gerenciadores de tarefas seguros, 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 um usuário, elas não podem ser enviadas para URIs
restrito 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.