Processamento assíncrono usando o objeto Job para ONTAP Select
Algumas chamadas da API Deploy, principalmente aquelas que criam ou modificam um recurso, podem demorar mais para serem concluídas do que outras chamadas. ONTAP Select Deploy processa essas solicitações de longa duração de forma assíncrona.
Solicitações assíncronas descritas usando o objeto Job
Após uma chamada de API assíncrona, o código de resposta HTTP 202 indica que a solicitação foi validada e aceita com sucesso, mas ainda não foi concluída. A solicitação é processada como uma tarefa em segundo plano que continua a ser executada após a resposta HTTP inicial ao cliente. A resposta inclui o objeto Job que ancora a solicitação, incluindo seu identificador exclusivo.
|
|
Você deve consultar a página de documentação online do ONTAP Select Deploy para determinar quais chamadas de API operam de forma assíncrona. |
Consultar o objeto Job associado a uma solicitação de API
O objeto Job retornado na resposta HTTP contém diversas propriedades. Você pode consultar a propriedade state para determinar se a solicitação foi concluída com sucesso. Um objeto Job pode estar em um dos seguintes estados:
-
Em fila
-
Em execução
-
Sucesso
-
Falha
Existem duas técnicas que você pode usar ao consultar um objeto Job para detectar o estado final da tarefa, seja sucesso ou falha:
-
A solicitação de sondagem padrão retorna imediatamente o estado atual do job
-
A solicitação de long polling retorna o estado da tarefa somente quando uma das seguintes situações ocorre:
-
O estado mudou mais recentemente do que o valor de data e hora fornecido na solicitação da pesquisa
-
O tempo limite expirou (1 a 120 segundos)
-
A pesquisa padrão e a pesquisa longa usam a mesma chamada de API para consultar um objeto Job. No entanto, uma solicitação de pesquisa longa inclui dois parâmetros de consulta: poll_timeout e last_modified.
|
|
Você deve sempre usar o método de polling longo para reduzir a carga de trabalho na máquina virtual Deploy. |
Procedimento geral para emitir uma solicitação assíncrona
Você pode usar o seguinte procedimento de alto nível para concluir uma chamada de API assíncrona:
-
Emita a chamada de API assíncrona.
-
Receba uma resposta HTTP 202 indicando aceitação bem-sucedida da solicitação.
-
Extraia o identificador do objeto Job do corpo da resposta.
-
Dentro de um laço, execute o seguinte em cada ciclo:
-
Obtenha o estado atual do Job com uma solicitação de longa duração
-
Se a tarefa estiver em um estado não terminal (enfileirada, em execução), execute o loop novamente.
-
-
Pare quando a tarefa atingir um estado terminal (sucesso, falha).