Processamento assíncrono usando o objeto Job para ONTAP Select
Algumas chamadas da API de implantação, especialmente aquelas que criam ou modificam um recurso, podem levar mais tempo para serem concluídas do que outras chamadas. O 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 realizar uma chamada de API executada de forma 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 em execução 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 on-line 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:
-
Na fila
-
Correndo
-
Sucesso
-
Falha
Há duas técnicas que você pode usar ao pesquisar um objeto Job para detectar um estado terminal para a tarefa, seja sucesso ou falha:
-
Solicitação de pesquisa padrão O estado do trabalho atual é retornado imediatamente
-
Solicitação de pesquisa longa O estado do trabalho é retornado somente quando ocorre uma das seguintes situações:
-
O estado mudou mais recentemente do que o valor de data e hora fornecido na solicitação de pesquisa
-
O valor de 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 long polling para reduzir a carga de trabalho na máquina virtual Deploy. |
Procedimento geral para emissão de 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 loop, execute o seguinte em cada ciclo:
-
Obtenha o estado atual do trabalho com uma solicitação de pesquisa longa
-
Se o trabalho estiver em um estado não terminal (na fila, em execução), execute o loop novamente.
-
-
Pare quando o trabalho atingir um estado terminal (sucesso, falha).