Esta página oferece uma vista geral das filas de obtenção no ambiente padrão do App Engine.
Nas filas de envio, as tarefas são entregues a um serviço de processamento com base na configuração da fila. Nas filas de obtenção, o serviço de processamento tem de pedir tarefas à fila. A fila responde permitindo que esse trabalhador tenha acesso exclusivo para processar a tarefa durante um período especificado, que se denomina concessão.
Com as filas de obtenção, também pode agrupar tarefas relacionadas através de etiquetas e, em seguida, configurar o seu worker para obter várias tarefas com uma determinada etiqueta de uma só vez. Este processo é denominado processamento em lote.
Se um trabalhador não conseguir processar uma tarefa antes da expiração da respetiva concessão, pode renová-la ou deixá-la expirar. Nesse momento, outro trabalhador pode adquiri-la. Quando o trabalho associado a uma tarefa estiver concluído, o trabalhador tem de eliminá-la.
A utilização de filas de obtenção requer que o seu código processe algumas funções que são automatizadas nas filas de envio:
- Aumentar o número de trabalhadores
- O seu código tem de dimensionar o número de trabalhadores com base no volume de processamento. Se o seu código não processar o dimensionamento, corre o risco de desperdiçar recursos de computação se não houver tarefas a processar. Também corre o risco de latência se tiver demasiadas tarefas a processar.
- A eliminar as tarefas
- O seu código também tem de eliminar explicitamente as tarefas após o processamento. Nas filas de envio, o App Engine elimina as tarefas por si. Se o seu trabalhador não eliminar as tarefas da fila de obtenção após o processamento, outro trabalhador volta a processar a tarefa. Isto desperdiça recursos de computação e arrisca-se a gerar erros se as tarefas não forem idempotentes.
As filas de obtenção no ambiente padrão do App Engine são criadas definindo uma propriedade num ficheiro de configuração denominado
queue.yaml
.
Fluxo de trabalho da fila de solicitações
Os trabalhadores que processam tarefas de filas de obtenção têm de ser definidos num serviço que é executado no ambiente padrão do App Engine.
O fluxo de trabalho é o seguinte:
- Crie uma fila de obtenção com
queue.yaml. - Cria tarefas e adiciona-as à fila.
- O trabalhador que criou aluga a tarefa, usando o TaskQueue.
- O App Engine envia dados de tarefas para o trabalhador na resposta de concessão.
- O trabalhador processa a tarefa. Se a tarefa não for executada antes da expiração do arrendamento, o trabalhador pode modificar a duração do arrendamento. Se o aluguer expirar, a tarefa fica disponível para ser alugada a outro trabalhador.
- Depois de uma tarefa ser processada com êxito, o trabalhador elimina-a.
O que se segue?
- Saiba como criar filas de obtenção.