Esta página explica as diferenças entre usar a
API Cloud Tasks para gerir filas
e usar o carregamento de um ficheiro
queue.yaml
do Cloud Tasks para alcançar os mesmos objetivos. Também aborda algumas das
armadilhas da combinação de mecanismos e como lidar com problemas comuns.
Introdução
A API Cloud Tasks fornece uma interface independente do App Engine para o serviço
App Engine Task Queue. Como parte dessa interface, oferece a capacidade de gerir filas, incluindo fazê-lo através da consola ou do comando gcloud
. As filas criadas pela API Cloud Tasks são acessíveis a partir do SDK do App Engine e vice-versa. Para manter a compatibilidade, é possível usar o ficheiro de configuração usado pelo SDK do App Engine, queue.yaml
, para também criar e configurar filas a serem usadas através da API Cloud Tasks. No entanto, a combinação da configuração através de ficheiro com a configuração através da API Cloud Tasks pode produzir consequências inesperadas.
Armadilhas da combinação de queue.yaml
com métodos de gestão de filas do Cloud Tasks
Para o serviço subjacente,os ficheiros queue.yaml
são definitivos. O carregamento de um queue.yaml
que omita filas existentes no seu projeto, independentemente da forma como foram criadas, faz com que essas filas sejam desativadas ou pausadas. Assim, se usar a API Cloud Tasks para chamar CreateQueue
ou UpdateQueue
e, em seguida, carregar um ficheiro queue.yaml
que os omita, as filas criadas nas chamadas Cloud Tasks são desativadas.
Considere o seguinte cenário:
- Chame
CreateQueue
para criar uma fila denominada "cloud-tasks-queue". Carregue um ficheiro
queue.yaml
com o seguinte conteúdo:queue: - name: queue-yaml-queue
Qual é o estado atual das filas neste projeto? A fila denominada "cloud-tasks-queue" e quaisquer outras filas existentes anteriormente estão no estado DISABLED
, e a fila denominada "queue-yaml-queue" está no estado RUNNING
.
Este comportamento pode ser surpreendente se criar filas através da API Cloud Tasks. As instruções abaixo explicam como retomar uma fila desativada.
Da mesma forma, se uma fila estiver desativada na API Cloud Tasks, mas aparecer posteriormente num ficheiro queue.yaml
carregado, essa fila é retomada.
Se uma fila for eliminada com o método DeleteQueue
e aparecer posteriormente num ficheiro queue.yaml
, o carregamento do ficheiro queue.yaml
pode falhar porque não é permitido reutilizar os nomes das filas durante vários dias após a eliminação.
Práticas recomendadas
Se não conhece o Cloud Tasks ou o App Engine, use a API Cloud Tasks
exclusivamente para gerir as suas filas e evite usar o queue.yaml
por completo. Os métodos de gestão de filas do Cloud Tasks oferecem aos utilizadores mais opções na criação, atualização e eliminação de filas.
No entanto, se for um utilizador existente do queue.yaml
, só deve ponderar mudar para métodos de gestão de filas se compreender os
erros de misturar o queue.yaml
com os métodos de gestão de filas do Cloud Tasks.
Para impedir que os utilizadores misturem métodos de gestão de tarefas, uma opção é criar uma app Web ou uma ferramenta de linha de comandos que todos os utilizadores têm de usar para criar, atualizar e eliminar filas. Se essa ferramenta usa métodos de gestão de filas do Cloud Tasks ou queue.yaml
é um detalhe de implementação da ferramentaqueue.yaml
com que os utilizadores não têm de se preocupar. Se os utilizadores tiverem de usar a ferramenta,
pode garantir que não existe uma mistura inadvertida de métodos de gestão de filas do Cloud Tasks e queue.yaml
utilização.
Para ajudar a aplicar a utilização de uma ferramenta deste tipo, pode conceder funções de administrador da fila à ferramenta e exigir que os utilizadores se autentiquem para a utilizar. Para saber mais sobre a gestão de acessos, consulte o artigo Configuração segura da fila.
Depuração
Pode inspecionar os registos de auditoria da atividade do administrador do seu projeto para obter o histórico de alterações à configuração da fila, incluindo criações, atualizações e eliminações de filas:
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
Por exemplo, se uma fila existente for desativada através de um carregamento queue.yaml
, é apresentada uma mensagem "Fila '[QUEUE_NAME]' desativada" no registo de auditoria através do método com.google.appengine.legacy.queue_updated
.
Como retomar uma fila desativada por um carregamento do queue.yaml
Se misturar queue.yaml
com métodos de gestão de filas do Cloud Tasks, o carregamento de um ficheiro queue.yaml
pode desativar acidentalmente uma fila criada através da API Cloud Tasks.
Para retomar a fila, pode chamar ResumeQueue
na fila ou adicioná-lo a queue.yaml
e carregá-lo. Tenha em atenção que, se tiver definido anteriormente um
processamento
rate
na configuração da fila queue.yaml
, a fila é reposta para o valor predefinido rate
.ResumeQueue
Isto reflete-se no campo
maxDispatchesPerSecond
da resposta a ResumeQueue
.
Quotas
Se usar o queue.yaml
para criar as suas filas, pode criar, por predefinição, um máximo de 100 filas. As filas criadas
com a API Cloud Tasks têm um máximo predefinido de 1000 filas. Tal como noutros casos, a combinação de métodos da API Google Cloud Tasks e da API Google Ads pode produzir resultados inesperados.queue.yaml
Por exemplo, suponha que cria algumas filas com queue.yaml
e, em seguida, recebe um aumento da quota para, por exemplo,2000. Se, posteriormente, usar o método da API Cloud Tasks para criar mais filas, recebe erros de falta de quota. Para corrigir esta situação,
apresente um pedido através da opção Editar quotas na página Quotas da
consolaGoogle Cloud .
Informações adicionais sobre os métodos de gestão de filas do Cloud Tasks
Configuração da fila e atraso no arranque da fila
As alterações à configuração da fila podem demorar vários minutos a entrar em vigor. Por exemplo, depois de ligar para CreateQueue
ou UpdateQueue
, podem passar vários minutos antes de poder ligar com êxito para CreateTask
nessa fila.
Cloud Tasks e a fila do App Enginedefault
A fila do App Engine denominada "default" recebe um tratamento especial no SDK do App Engine e na API Cloud Tasks.
Se a fila default
ainda não existir, é criada nas seguintes situações:
- Quando uma tarefa é adicionada pela primeira vez à fila
default
através do SDK do App Engine. - Quando é carregado um ficheiro
queue.yaml
que especifica uma filadefault
. - Quando
CreateQueue
ouUpdateQueue
é chamado para criar a filadefault
.
Para preservar a compatibilidade com o App Engine, o Cloud Tasks aplica as seguintes restrições:
- Se for criada uma fila com o nome "default", tem de ser uma fila que use tarefas do App Engine.
- Depois de criada, os utilizadores não podem eliminar a fila
default
.
Na API Cloud Tasks, o seguinte também se aplica à fila default
:
- A API Cloud Tasks não cria automaticamente a fila
default
nem outras filas. - Tal como qualquer outra fila, chamar
GetQueue
na filadefault
resulta num erro de não encontrado se a chamada for feita antes da criação da fila. - Da mesma forma, a fila
default
não aparece no resultado deListQueues
antes de ser criada. - A configuração da fila
default
pode ser alterada com a chamadaUpdateQueue
.
O que se segue?
- Consulte os métodos disponíveis na API Cloud Tasks RPC nos documentos de referência.
- Consulte os métodos disponíveis na API REST Cloud Tasks nos documentos de referência.
- Leia sobre
queue.yaml
.