Usar filas pull

Nesta página, você encontra uma visão geral das filas pull no ambiente padrão do App Engine.

Nas filas push, as tarefas são entregues para o serviço do worker com base na configuração da fila. Nas filas pull, o serviço do worker precisa solicitar tarefas à fila. A fila responde permitindo que esse worker tenha acesso exclusivo para processar a tarefa por um período específico. Isso é chamado de lease.

O aplicativo transfere a tarefa para o serviço de fila de tarefas que, então, é alocada pelo worker

Além disso, com as filas pull, é possível agrupar tarefas relacionadas usando tags e, em seguida, configurar o worker para extrair várias tarefas com uma determinada tag de uma só vez. Isso é chamado de processamento em lotes.

Se um worker não processar uma tarefa a tempo, ele poderá renovar a alocação ou deixá-la expirar para que outro worker a adquira. Após a conclusão do trabalho associado a uma tarefa, o worker precisa excluí-la.

As filas exigem que o código lide com algumas funções que são automatizadas nas filas push:

Escalonamento de workers
O código precisa escalonar o número de workers com base no volume de processamento. Caso o código não faça o escalonamento, há a possibilidade de perder recursos de computação se não houver tarefas a serem processadas. Se houver muitas tarefas, haverá o risco de latência.
Exclusão de tarefas
O código também precisa excluir explicitamente as tarefas após o processamento. Em filas push, o App Engine exclui as tarefas por você. No entanto, se o worker não excluir tarefas da fila pull após o processamento, outro worker processará novamente a tarefa. Isso desperdiça recursos de computação e apresenta risco de erros quando as tarefas não são idempotentes.

No ambiente padrão do App Engine, as filas pull são criadas com a definição de uma propriedade em um arquivo de configuração chamado queue.yaml .

Fluxo de trabalho da fila pull

Os workers que processam tarefas de filas pull precisam ser definidos em um serviço que seja executado no ambiente padrão do App Engine.

O fluxo de trabalho é o seguinte:

  1. Crie uma fila pull usando queue.yaml .
  2. Crie tarefas e as adiciona à fila.
  3. O worker criado coloca a tarefa em lease, usando o TaskQueue.
  4. O App Engine envia os dados da tarefa ao worker na resposta da alocação.
  5. O worker processa a tarefa. Se a tarefa não for executada antes do término da alocação, o worker poderá modificar a duração da alocação. Se a alocação expirar, a tarefa estará disponível para ser alocada a outro worker.
  6. Quando a tarefa for processada, o worker a excluirá.

A seguir