Visão geral do Cloud Tasks

Nesta página, você verá o que são as tarefas e filas do Cloud Tasks, além de quando e como usá-las. O Cloud Tasks permite que um aplicativo execute trabalhos definidos pelo desenvolvedor, chamados de tarefas, de maneira assíncrona, fora de uma solicitação do usuário.

O código de origem descarrega o trabalho adicionando as tarefas a filas, que são criadas pelo desenvolvedor, mas são gerenciadas pelo serviço Cloud Tasks. As tarefas são processadas mais tarde, em segundo plano, por workers que também são fornecidos pelo desenvolvedor. As complexidades associadas ao gerenciamento da execução dessas tarefas, como custos de latência voltados para o usuário, falhas do servidor, limitações de consumo de recursos e gerenciamento de novas tentativas, são tratadas pelo serviço.

As próprias tarefas são constituídas por um nome exclusivo e informações de configuração. Opcionalmente, também contêm dados da solicitação inicial, chamados payload, que são necessários para processar a solicitação. Como o payload é enviado no corpo da solicitação, as tarefas que o incluem precisam usar POST ou PUT como método HTTP.

Os usuários dos ambientes de execução de primeira geração do ambiente padrão do App Engine devem acessar o serviço do Cloud Tasks por meio da API App Engine Task Queue. Para mais informações sobre como usar esse método, consulte a documentação do Java 8, Python 2.7, Go 1.9 ou PHP 5.5. Os usuários dos ambientes de execução de segunda geração da geração padrão do Google App Engine, de ambientes flexíveis e de outras plataformas agora podem usar a API Cloud Tasks.

Para acessar o serviço Cloud Tasks usando a API Cloud Tasks, é necessário ter um projeto contendo um aplicativo do Google App Engine que hospede as filas do Cloud Tasks criadas por você. Este aplicativo está localizado em uma região específica que serve como o parâmetro LOCATION_ID para suas solicitações do Cloud Tasks, portanto, deixe-o registrado. Observe que dois locais, denominados europe-west e us-central nos comandos do Google App Engine, são chamados, respectivamente, europe-west1 e us-central1 nos comandos do Cloud Tasks. O aplicativo serve como o local para as filas que o desenvolvedor cria. O serviço subjacente do Cloud Tasks é executado no mesmo local.

Casos de uso

Os casos de uso típicos incluem:

  • acelerar os tempos de resposta dos usuários delegando operações em segundo plano potencialmente lentas, como atualizações de banco de dados para um worker;
  • preservar solicitações no contexto de incidentes de produção inesperados;
  • ajudar a amenizar os picos de tráfego removendo tarefas que não são voltadas para o usuário do fluxo de usuários principal.

Filas do Cloud Tasks com destinos HTTP

No caso de destinos HTTP genéricos, o serviço Cloud Tasks encaminha a solicitação de tarefa ao worker, localizado em qualquer endpoint HTTP genérico, como Cloud Functions, Cloud Run, GKE, Compute Engine ou mesmo um servidor Web local, com base em como a tarefa é configurada. Essas filas enviam solicitações a uma taxa confiável e configurável, e garantem a execução confiável das tarefas. Depois de concluídas, todos os workers precisam enviar um código de resposta HTTP (200-299) para o serviço Cloud Tasks antes de um prazo de 10 minutos. Se nenhuma resposta ou uma resposta diferente for enviada, uma nova tentativa com a tarefa será realizada.

Filas baseadas em HTTP

O destino precisa gerenciar o escalonamento de workers e a limpeza de tarefas quando elas forem concluídas.

Se o destino exigir autenticação, será necessário configurar duas contas de serviço, uma para o aplicativo, o cliente, e outra para a própria fila. As duas contas precisam ter recebido as permissões necessárias, e um identificador para a conta de serviço do cliente deverá ser incluído na solicitação de tarefa. Consulte Criando tarefas de destino HTTP (em inglês) para mais informações.

Filas do Cloud Tasks com destinos do App Engine

No caso de destinos do App Engine, o serviço Cloud Tasks também encaminha a solicitação de tarefa ao worker, localizado no App Engine, com base na forma como a tarefa (ou, menos frequentemente, a própria fila) é configurada. Essas filas enviam solicitações a uma taxa confiável e configurável, e garantem a execução confiável das tarefas. Depois de concluídas, todos os workers precisam enviar um código de resposta HTTP (200-299) para o serviço Cloud Tasks, nesta instância, antes de um prazo baseado no tipo de serviço do escalonamento de instância, que é de 10 minutos para escalonamento automático ou de até 24 horas para escalonamento manual. Se nenhuma resposta ou uma resposta diferente for enviada, uma nova tentativa com a tarefa será realizada.

Filas baseadas no Google App Engine

Como os gerenciadores fazem parte do App Engine, o próprio serviço Cloud Tasks pode fazer muito do gerenciamento de processos para a tarefa, escalonando os workers acima e abaixo do tráfego e excluindo tarefas quando elas são concluídas.

Fluxos de trabalho

O fluxo de trabalho geral é o seguinte:

  1. Você cria um worker para processar as tarefas.
  2. Você cria uma fila.
  3. Você cria tarefas de maneira programática e as adiciona à fila.
  4. O serviço Cloud Tasks retorna um OK para o aplicativo de origem. Isso indica que a tarefa foi gravada com êxito no armazenamento do Cloud Task, o que torna a solicitação de criação de tarefa altamente disponível e durável.
  5. As tarefas são transmitidas para o worker.
  6. O worker processa a tarefa.
  7. Para completar a sequência, o worker retorna um código de status de sucesso 2xx para o serviço Cloud Tasks.

Depois que a tarefa for entregue à fila, nenhum dado estará disponível para a solicitação inicial.

Termos

A tabela a seguir mostra os termos-chave que descrevem aspectos do comportamento do Cloud Tasks.

Termo Definição
fila Um conjunto de tarefas com o mesmo tipo de destino gerenciado por uma única configuração.
tipo de destino Como e o local em que uma tarefa é processada.
worker Um serviço que processa tarefas.
tentativa Uma tentativa de executar uma tarefa.
tentativa de despacho O momento em que o Cloud Tasks enviou a tarefa ao seu destino.
tentativa de resposta Uma resposta de um worker que indica que o trabalho associado à tarefa foi concluído com sucesso ou falhou.
nova tentativa Várias tentativas para executar uma tarefa. O número de novas tentativas é definido por RetryConfig.
limites de taxas Os limites de taxas para uma fila.

Métricas

As seguintes métricas pré-definidas do Cloud Task estão disponíveis por meio do Stackdriver.

Tipo de métrica
Nome de exibição
Classe, Tipo, Unidade
Descrição
Rótulos
api/request_count
Solicitações da API
DELTA, INT64, 1
Contagem de chamadas da Cloud Tasks API.
api_method: o método da API chamado (por exemplo, CreateTask).
response_code: código de resposta canônico como string (por exemplo, 'ok').
queue/task_attempt_count
Contagem de tentativas da tarefa
DELTA, INT64, 1
Contagem de tentativas da tarefa discriminadas por código de resposta.
response_code: código de resposta canônico como string (por exemplo, 'ok').
queue/task_attempt_delays
Atrasos de tentativas da tarefa
DELTA, DISTRIBUTION, ms
Atraso entre cada horário de tentativa programado e o horário de tentativa real.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Tasks