Quando as tarefas estão em uma fila pull, o worker pode alocá-las. Após o processamento das tarefas, ele precisa excluí-las.
Antes de começar
- Crie uma fila pull.
- Crie tarefas e adicione-as à fila pull.
Contexto importante
- Este método é aplicável apenas a workers que sejam executados em um serviço no ambiente padrão.
- Ao usar filas pull, você é responsável pelo escalonamento dos workers com base no volume de processamento.
Como colocar tarefas em lease
Depois que as tarefas estiverem na fila, um worker poderá colocar uma ou mais delas em lease usando o método
taskqueue.Lease
. Pode haver um pequeno atraso até que as tarefas adicionadas recentemente usando
taskqueue.Add
sejam disponibilizadas via
taskqueue.Lease
.
Ao solicitar um lease, você especifica o número de tarefas a serem alocadas (máximo de 1.000) e a duração do lease em segundos (no máximo uma semana). A duração do lease deve ser longa o suficiente para garantir que haja tempo suficiente para a conclusão da tarefa mais lenta antes do fim do período de lease. É possível modificar um lease de tarefa usando
taskqueue.ModifyLease
.
Uma tarefa em lease fica indisponível para processamento por outro worker até que o lease expire.
O exemplo de código a seguir aloca 100 tarefas da fila pull-queue por uma hora:
Processamento em lote com tags de tarefa
Nem todas as tarefas são iguais. Seu código pode marcar tarefas com tags e depois escolher as que serão colocadas em lease por tag. A tag funciona como um filtro. Com este exemplo de código, é possível marcar tarefas e, em seguida, alocar por tags:
Como regular taxas de pesquisa
Os workers que pesquisam a fila quanto a tarefas para colocar em lease precisam detectar se estão tentando o lease de tarefas mais rapidamente do que a fila pode fornecer. Se houver falha, um erro de retirada será retornado detaskqueue.Lease. Seu código
precisa resolver esses erros, desistir de chamar taskqueue.Lease e tentar novamente mais tarde. Para evitar esse problema, defina um prazo de RPC maior ao chamar taskqueue.Lease. e não insista quando uma solicitação de alocação retornar uma lista vazia de tarefas.
Se você gerar mais de 10 solicitações de LeaseTasks por fila por segundo, apenas as 10 primeiras solicitações retornarão resultados. Se as solicitações ultrapassarem esse limite, OK será retornado sem nenhum resultado.
Como monitorar tarefas no console do Google Cloud
Para ver informações sobre todas as tarefas e filas no aplicativo:
Abra a página Cloud Tasks no Google Cloud console e procure o valor Pull na coluna Tipo.
Clique no nome da fila em que você está interessado e abra a página de detalhes dela. Serão exibidas todas as tarefas na fila selecionada.
Como excluir tarefas
Depois que o worker conclui uma tarefa, ele precisa excluí-la da fila. Se continuarem sendo exibidas tarefas restantes em uma fila depois que o worker terminar de processá-las, é provável que tenha ocorrido falha no worker. Nesse caso, as tarefas serão processadas por outro worker.
É possível excluir uma lista de tarefas, como a retornada por taskqueue.Lease, passando-a para taskqueue.DeleteMulti: