Como criar filas push

Nesta página, aprenda a criar e personalizar uma fila push e a examinar o conteúdo de uma fila.

Como usar um arquivo de configuração de fila para criar filas

Para processar uma tarefa, você precisa adicioná-la a uma fila push. O App Engine fornece uma fila push padrão, chamada default, que está configurada e pronta para uso com as configurações padrão. Se quiser, basta adicionar todas as tarefas à fila padrão, sem precisar criar e configurar outras filas.

Para adicionar filas ou alterar a configuração padrão, edite o arquivo de configuração da fila do aplicativo enviado para o App Engine. É possível criar até 100 filas. Não é possível criar filas dinamicamente.

Este arquivo de configuração define duas filas:

queue:
- name: queue-blue
  target: v2.task-module
  rate: 5/s

- name: queue-red
  rate: 1/s

Para fazer upload do arquivo:

gcloud app deploy queue.yaml

Todas as tarefas adicionadas a queue-blue são enviadas para o módulo de destino v2.task-module. A taxa de atualização de queue-red é alterada de 5/s para 1/s. As tarefas serão removidas da fila e enviadas para os destinos à taxa de uma tarefa por segundo.

Se excluir uma fila, você precisará esperar aproximadamente sete dias para criar uma nova fila com o mesmo nome.

Existem muitos outros parâmetros que podem ser adicionados ao arquivo de configuração para personalizar o comportamento de uma fila push. Para mais informações, consulte a referência do arquivo de configuração de fila.

Definir a taxa de processamento da fila push

É possível controlar a taxa em que as tarefas são processadas em cada uma das filas definindo outras diretivas, como rate, bucket_size e max_concurrent_requests.

A fila de tarefas usa buckets de token para controlar a taxa de execução. Cada fila nomeada tem um bucket de token que retém os tokens, até o máximo especificado por bucket_size ou com um máximo de 5 tokens se você não especificar o tamanho do bucket.

Cada vez que o aplicativo executa uma tarefa, um token é removido do bucket. O app continua processando tarefas na fila até acabarem os tokens do bucket da fila. O App Engine preenche o bucket outra vez com novos tokens continuamente, com base no rate que você especificou para a fila.

Caso a fila contenha tarefas a serem processadas e o bucket da fila contenha tokens, o App Engine processa simultaneamente o mesmo número de tarefas e tokens. Isso pode causar bursts de processamento, consumindo recursos do sistema e competindo com solicitações de veiculação do usuário.

Se quiser impedir a execução de muitas tarefas ao mesmo tempo, ou o conflito de armazenamento de dados, use max_concurrent_requests.

O exemplo a seguir mostra como definir max_concurrent_requests para limitar tarefas e também como ajustar o tamanho e a taxa do bucket com base nas necessidades do aplicativo e nos recursos disponíveis:

queue:
- name: queue-blue
  rate: 20/s
  bucket_size: 40
  max_concurrent_requests: 10

Como definir limites de armazenamento para todas as filas

Use o arquivo de configuração de filas para definir o volume total de armazenamento que os dados da tarefa podem consumir em todas as filas. Para definir o limite de armazenamento total, inclua um elemento chamado total_storage_limit no nível superior:

# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
  rate: 35/s

O valor é um número seguido de uma unidade: B para bytes, K para kilobytes, M para megabytes, G para gigabytes, T para terabytes. Por exemplo, 100K especifica um limite de 100 kilobytes. Se adicionar uma tarefa fizer com que a fila exceda o limite de armazenamento, a chamada para adicionar a tarefa apresentará uma falha. O limite padrão é 500M (500 megabytes) para aplicativos gratuitos. Para aplicativos faturados, não haverá limite até você definir um. É possível usar esse limite para proteger o aplicativo de um erro de programação de fork bomb, em que cada tarefa adiciona várias outras durante a execução.

Se o app estiver recebendo erros para uma cota insuficiente ao adicionar tarefas, aumentar o limite de armazenamento total poderá ajudar. Se estiver usando esse recurso, recomendamos definir um limite que corresponda ao armazenamento necessário para vários dias de tarefas. Isso permite o backup temporário das filas e a aceitação contínua de novas tarefas durante o trabalho no backlog e ainda mantém a proteção contra um erro de programação do tipo "fork bomb".

Como monitorar filas no console

  1. No console, acesse a página "Cloud Tasks".

    Ir para o Cloud Tasks

    Se você acessar a página Fila de tarefas do App Engine, verá instruções que guiam você para a página "Cloud Tasks". Essa atualização no console não altera como as filas de tarefas funcionam.

  2. Ative a API Cloud Tasks.

  3. Quando estiver na página "Cloud Tasks", você verá uma lista de todas as filas no aplicativo. Clicar no nome de uma fila exibirá a página Detalhes da fila, que mostra todas as tarefas na fila selecionada.

A seguir

Saiba mais sobre como criar tarefas.