Vista geral da fila de tarefas

Esta página descreve o que são filas de tarefas e quando e como as usar. As filas de tarefas permitem que as aplicações realizem trabalho, denominado tarefas, de forma assíncrona fora de um pedido do utilizador. Se uma app precisar de executar trabalho em segundo plano, adiciona tarefas a filas de tarefas. As tarefas são executadas mais tarde pelos serviços de worker.

O serviço Task Queue foi concebido para trabalho assíncrono. Não oferece garantias fortes relativamente ao momento da entrega de tarefas e, por isso, é inadequado para aplicações interativas em que um utilizador está à espera do resultado.

Filas de envios e filas de solicitações

As filas de tarefas estão disponíveis em dois formatos: push e pull. A forma como o serviço Task Queue envia pedidos de tarefas para os serviços de processamento é diferente para as diferentes filas.

As filas de envio executam tarefas através da entrega de pedidos HTTP a serviços de processamento do App Engine. Envia estes pedidos a uma taxa fiável e constante e garante a execução fiável de tarefas. Como pode controlar a taxa à qual as tarefas são enviadas da fila, pode controlar o comportamento de escalabilidade dos trabalhadores e, por conseguinte, os seus custos.

Uma vez que as tarefas são executadas como pedidos segmentados para serviços do App Engine, estão sujeitas a prazos rigorosos. As tarefas processadas pelos serviços de escalabilidade automática têm de terminar em dez minutos. As tarefas processadas por serviços de escalabilidade básica e manual podem ser executadas durante um máximo de 24 horas.

As filas de obtenção não são suportadas no PHP 5.

Todas as tarefas da fila de tarefas são realizadas de forma assíncrona. A aplicação que cria a tarefa transfere-a para a fila. A aplicação de origem não é notificada se a tarefa for concluída ou não, nem se foi bem-sucedida.

Se um trabalhador não processar uma tarefa, o serviço Task Queue fornece à fila um mecanismo de nova tentativa, para que a tarefa possa ser repetida um número finito de vezes.

Exemplos de utilização

Filas de envios

Um exemplo de utilização típico da fila de envio é uma operação "lenta". Considere um sistema de mensagens de uma rede social. Sempre que um utilizador envia uma mensagem, a rede tem de atualizar os seguidores do remetente. Esta pode ser uma operação muito demorada. Usando uma fila de envio, a aplicação pode colocar em fila uma tarefa para cada mensagem à medida que chega para ser enviada para um serviço de processamento para processamento. Quando o trabalhador recebe o pedido de tarefa, pode obter a lista de seguidores do remetente e atualizar a base de dados para cada um. O trabalhador pode tornar-se ainda mais eficiente ao colocar outra tarefa push em fila para cada atualização da base de dados.

Outra utilização das filas de envio é para tarefas agendadas. Imagine uma aplicação que implementa uma campanha publicitária. Um grupo de tarefas escritas para enviar emails pode ser adicionado a uma fila de envio com instruções para reter as tarefas até uma hora especificada no futuro. Quando chegar a data de vencimento, o serviço Task Queue começa a emitir pedidos para executar as tarefas.

O que se segue?