Esta página demonstra como criar um processador de tarefas do App Engine, o código de trabalho que processa uma tarefa do App Engine. A fila do Cloud Tasks envia pedidos HTTP para o seu controlador de tarefas. Após a conclusão bem-sucedida do processamento, o controlador tem de enviar um código de estado HTTP entre 200
e 299
de volta para a fila. Qualquer outro valor indica que a tarefa falhou e a fila tenta novamente a tarefa.
Os pedidos da fila de tarefas do App Engine são enviados a partir do endereço IP 0.1.0.2
.
Consulte também o
intervalo de IP para pedidos enviados para o ambiente do App Engine.
C#
Ir
Java
Node.js
PHP
Python
Ruby
Limites de tempo
As tarefas do App Engine têm limites de tempo específicos que dependem do tipo de escalabilidade do serviço que as está a executar.
Para serviços de worker em execução no ambiente padrão:
- Escalamento automático: o processamento de tarefas tem de terminar em 10 minutos.
- Ajuste de escala manual e básico: os pedidos podem ser executados durante um máximo de 24 horas.
Para serviços de trabalhadores executados no ambiente flexível: todos os tipos têm um limite de tempo de 60 minutos.
Se o seu controlador não cumprir o prazo, a fila assume que a tarefa falhou e tenta novamente.
Ler cabeçalhos de pedidos de tarefas do App Engine
Os pedidos enviados para o seu controlador 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 seu controlador pode querer usar.
Estes cabeçalhos são definidos internamente. Se algum destes cabeçalhos estiver presente num pedido de utilizador externo à sua app, é substituído pelos internos, exceto no caso de pedidos de administradores com sessão iniciada na aplicação, aos quais é permitido definir cabeçalhos para fins de teste.
Os pedidos de tarefas do App Engine contêm sempre os seguintes cabeçalhos:
Cabeçalho | Descrição |
---|---|
X-AppEngine-QueueName |
O nome da fila. |
X-AppEngine-TaskName |
O nome "curto" da tarefa ou, se não tiver sido especificado nenhum nome na criação, um ID exclusivo gerado pelo sistema. Este é o valor my-task-id no nome da tarefa completo; 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 vezes que a tarefa foi repetida. Para a primeira tentativa, este valor é 0 . Este número inclui tentativas em que a tarefa falhou devido à falta de instâncias disponíveis e nunca atingiu a fase de execução. |
X-AppEngine-TaskExecutionCount |
O número de vezes que a tarefa foi executada e recebeu uma resposta do controlador. Uma vez que o Cloud Tasks elimina a tarefa assim que recebe uma resposta bem-sucedida, todas as respostas anteriores do controlador são falhas. Este número não inclui falhas devido à falta de instâncias disponíveis. Tenha em atenção que X-AppEngine-TaskExecutionCount pode ser igual a X-AppEngine-TaskRetryCount se for atualizado antes de se tentar uma execução. |
X-AppEngine-TaskETA |
A hora agendada da tarefa, especificada em segundos desde 1 de janeiro de 1970. |
Se o seu controlador de pedidos encontrar algum dos cabeçalhos indicados anteriormente, pode presumir que o pedido é um pedido do Cloud Tasks.
Além disso, os pedidos do Cloud Tasks podem conter os seguintes cabeçalhos:
Cabeçalho | Descrição |
---|---|
X-AppEngine-TaskPreviousResponse |
O código de resposta HTTP da nova tentativa anterior. |
X-AppEngine-TaskRetryReason |
O motivo da repetição da tarefa. |
X-AppEngine-FailFast |
Indica que uma tarefa falha imediatamente se uma instância existente não estiver disponível. |
Encaminhamento de destino
Nas tarefas do App Engine, a fila e o controlador de tarefas são executados no mesmo Google Cloud projeto. O tráfego é encriptado durante o transporte e nunca sai dos centros de dados da Google. Não pode definir explicitamente o protocolo (por exemplo, HTTP ou HTTPS). No entanto, o pedido ao controlador parece ter usado o protocolo HTTP.
As tarefas podem ser enviadas para processadores de tarefas seguros, processadores de tarefas não seguros e, em tempos de execução suportados, URIs restritos com login: admin
.
Uma vez que as tarefas não são executadas como nenhum utilizador, não podem ser enviadas para URIs
restritos com login: required
.
Os envios de tarefas também não seguem redirecionamentos.
O que se segue?
- Saiba mais sobre as tarefas na referência da API RPC.
- Saiba mais sobre as tarefas na referência da API REST.