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
CreateQueuepara criar uma fila denominada "cloud-tasks-queue". Carregue um ficheiro
queue.yamlcom 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
defaultatravés do SDK do App Engine. - Quando é carregado um ficheiro
queue.yamlque especifica uma filadefault. - Quando
CreateQueueouUpdateQueueé 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
defaultnem outras filas. - Tal como qualquer outra fila, chamar
GetQueuena filadefaultresulta num erro de não encontrado se a chamada for feita antes da criação da fila. - Da mesma forma, a fila
defaultnão aparece no resultado deListQueuesantes de ser criada. - A configuração da fila
defaultpode 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.