Criar filas de envio

Esta página descreve como criar e personalizar uma fila de envio e como examinar o conteúdo de uma fila.

Usar um ficheiro de configuração de filas para criar filas

Para processar uma tarefa, tem de a adicionar a uma fila de envio. O App Engine fornece uma fila de envio predefinida, denominada default, que está configurada e pronta a usar com as predefinições. Se quiser, pode adicionar todas as suas tarefas à fila predefinida, sem ter de criar e configurar outras filas.

Para adicionar filas ou alterar a configuração predefinida, edite o ficheiro de configuração da fila para a sua aplicação, que carrega para o App Engine. Pode criar até 100 filas. Não é possível criar filas dinamicamente.

Este ficheiro de configuração de filas define duas filas:

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

- name: queue-red
  rate: 1/s

Para carregar o ficheiro:

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 foi alterada de 5/s para 1/s. As tarefas são retiradas da fila e enviadas para os respetivos destinos à taxa de 1 tarefa por segundo.

Se eliminar uma fila, tem de aguardar aproximadamente 7 dias antes de criar uma nova fila com o mesmo nome.

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

Definir a taxa de processamento da fila de envio

Pode controlar a taxa à qual as tarefas são processadas em cada uma das suas filas definindo outras diretivas, como rate, bucket_size e max_concurrent_requests.

A fila de tarefas usa segmentos de tokens para controlar a taxa de execução de tarefas. Cada fila com nome tem um segmento de tokens que contém tokens, até ao máximo especificado por bucket_size, ou um máximo de 5 tokens se não especificar o tamanho do segmento.

Sempre que a sua aplicação executa uma tarefa, é removido um token do conjunto. A sua app continua a processar tarefas na fila até que o bucket da fila fique sem tokens. O App Engine volta a encher o contentor com novos tokens continuamente com base no rate que especificou para a fila.

Se a fila contiver tarefas a processar e o contentor da fila contiver tokens, o App Engine processa simultaneamente tantas tarefas quantos tokens existirem. Isto pode levar a picos de processamento, consumindo recursos do sistema e competindo com pedidos de serviço de utilizadores.

Se quiser impedir a execução de demasiadas tarefas em simultâneo ou evitar a contenção do armazeno de dados, use max_concurrent_requests.

O exemplo seguinte mostra como definir max_concurrent_requests para limitar as tarefas e também mostra como ajustar o tamanho e a taxa do depósito com base nas necessidades da sua aplicação e nos recursos disponíveis:

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

Definir limites de armazenamento para todas as filas

Pode usar o ficheiro de configuração da fila para definir a quantidade total de armazenamento que os dados das tarefas podem consumir em todas as filas. Para definir o limite de armazenamento total, inclua um elemento denominado 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 e 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 falha. O limite predefinido é 500M (500 megabytes) para apps gratuitas. Para apps faturadas, não existe um limite até que defina explicitamente um. Pode usar este limite para proteger a sua app de um erro de programação de fork bomb em que cada tarefa adiciona várias outras tarefas durante a respetiva execução.

Se a sua app estiver a receber erros por quota insuficiente ao adicionar tarefas, aumentar o limite de armazenamento total pode ajudar. Se estiver a usar esta funcionalidade, recomendamos vivamente que defina um limite que corresponda ao armazenamento necessário para várias tarefas. Isto permite que as filas sejam temporariamente copiadas e continuem a aceitar novas tarefas enquanto processam o backlog, ao mesmo tempo que estão protegidas contra um erro de programação de bomba de bifurcação.

Monitorizar filas na Google Cloud consola

  1. Na Google Cloud consola, aceda à página Cloud Tasks.

    Aceda ao Cloud Tasks

    Tenha em atenção que, se aceder à página Fila de tarefas do App Engine, são apresentadas instruções que lhe indicam como aceder à página do Cloud Tasks. Esta atualização na Google Cloud consola não altera o funcionamento das filas de tarefas.

  2. Ative a API Cloud Tasks.

  3. Quando estiver na página do Cloud Tasks, é apresentada uma lista de todas as filas na aplicação. Clicar no nome de uma fila apresenta a página Detalhes da fila, que mostra todas as tarefas na fila selecionada.

O que se segue?

Saiba como criar tarefas.