Assim que as tarefas estiverem numa fila de obtenção, um trabalhador pode alugá-las. Depois de processadas, o trabalhador tem de eliminar as tarefas.
Antes de começar
- Crie uma fila de obtenção.
- Crie tarefas e adicione-as à fila de obtenção.
Contexto importante
- Este método só é aplicável a trabalhadores que estão a ser executados num serviço no ambiente padrão.
- Quando usa filas de obtenção, é responsável por dimensionar os seus trabalhadores com base no volume de processamento.
Tarefas de leasing
Depois de as tarefas estarem na fila, um trabalhador pode alugá-las através do método taskqueue.Lease
. Pode haver um pequeno atraso antes de as tarefas adicionadas recentemente através do taskqueue.Add
ficarem disponíveis através do taskqueue.Lease
.
Quando pede uma concessão, especifica o número de tarefas a conceder (até um máximo de 1000 tarefas) e a duração da concessão em segundos (até um máximo de uma semana). A duração da concessão tem de ser suficientemente longa para garantir que a tarefa mais lenta tem tempo para terminar antes de o período de concessão expirar. Pode modificar uma concessão de tarefa através de taskqueue.ModifyLease
.
O aluguer de uma tarefa torna-a indisponível para processamento por outro trabalhador e permanece indisponível até o aluguer expirar.
O exemplo de código seguinte aluga 100 tarefas da fila pull-queue
durante uma hora:
Processamento em lote com etiquetas de tarefas
Nem todas as tarefas são iguais. O seu código pode "etiquetar" tarefas e, em seguida, escolher tarefas para alugar por etiqueta. A etiqueta funciona como um filtro. O seguinte exemplo de código demonstra como etiquetar tarefas e, em seguida, arrendar por etiquetas:
Regulamentar as taxas de sondagem
Os trabalhadores que sondam a fila para alugar tarefas devem detetar se estão a tentar alugar tarefas mais rapidamente do que a fila as pode fornecer. Se esta falha ocorrer, é devolvido um erro de recuo de taskqueue.Lease
.
O seu código tem de processar estes erros, recuar da chamada de taskqueue.Lease
e, em seguida, tentar novamente mais tarde. Para evitar este problema, considere definir um prazo de RPC mais elevado quando chamar taskqueue.Lease
. Também deve recuar quando um pedido de concessão devolve uma lista de tarefas vazia.
Se gerar mais de 10 pedidos LeaseTasks por fila por segundo, apenas os primeiros 10 pedidos devolvem resultados. Se os pedidos excederem este limite, é devolvido OK
com zero resultados.
Monitorizar tarefas na Google Cloud consola
Para ver informações sobre todas as tarefas e filas na sua aplicação:
Abra a página Cloud Tasks na Google Cloud consola e procure o valor Pull na coluna Tipo.
Clique no nome da fila na qual tem interesse para abrir a página de detalhes da fila. Apresenta todas as tarefas na fila selecionada.
Eliminar tarefas
Assim que um trabalhador conclui uma tarefa, tem de a eliminar da fila. Se vir tarefas restantes numa fila depois de um trabalhador terminar o processamento das mesmas, é provável que o trabalhador tenha falhado. Neste caso, as tarefas são processadas por outro trabalhador.
Pode eliminar uma lista de tarefas, como a devolvida por taskqueue.Lease
, transmitindo-a a taskqueue.DeleteMulti
: