Processamento assíncrono usando o objeto Job
Depois de emitir uma solicitação de API projetada para ser executada assincronamente, um objeto de tarefa é sempre criado e retornado ao chamador. O trabalho descreve e ancora uma tarefa em segundo plano que processa a solicitação. Dependendo do código de status HTTP, você deve recuperar o estado da tarefa para determinar se a solicitação foi bem-sucedida.
"Referência da API"Consulte para determinar quais chamadas de API são projetadas para serem executadas de forma assíncrona.
Controlar como uma solicitação é processada
Você pode usar o return_timeout
parâmetro de consulta para controlar como uma chamada de API assíncrona é processada. Há dois resultados possíveis ao usar este parâmetro.
- O temporizador expira antes de a solicitação ser concluída
-
Para solicitações válidas, o ONTAP retorna um código de status HTTP 202 junto com o objeto job. Você deve recuperar o estado do trabalho para determinar se a solicitação foi concluída com êxito.
- A solicitação é concluída antes que o temporizador expire
-
Se a solicitação for válida e for concluída com êxito antes que o tempo expire, o ONTAP retornará um código de status HTTP 200 juntamente com o objeto da tarefa. Como a solicitação é concluída de forma síncrona, como indicado pelo 200, você não precisa recuperar o estado da tarefa.
O valor padrão para o return_timeout
parâmetro é zero segundos. Portanto, se você não incluir o parâmetro, o código de status HTTP 202 sempre será retornado para uma solicitação válida.
Consultando o objeto Job associado a uma solicitação de API
O objeto Job retornado na resposta HTTP contém várias propriedades. Você pode consultar a propriedade State em uma chamada API subsequente para determinar se a solicitação foi concluída com êxito. Um objeto Job está sempre num dos seguintes estados:
- estados não-terminais
-
-
Em fila de espera
-
Em execução
-
Em pausa
-
- estados do terminal
-
-
Sucesso
-
Falha
-
Procedimento geral para emitir uma solicitação assíncrona
Você pode usar o seguinte procedimento de alto nível para concluir uma chamada assíncrona de API. Este exemplo assume que o return_timeout
parâmetro não é utilizado ou que o tempo expira antes da conclusão do trabalho em segundo plano.
-
Emita uma chamada de API que foi projetada para ser executada assincronamente.
-
Receber uma resposta HTTP 202 indicando aceitação de uma solicitação válida.
-
Extraia o identificador do objeto Job do corpo de resposta.
-
Dentro de um loop temporizado, execute o seguinte em cada ciclo:
-
Obtenha o estado atual do trabalho.
-
Se o trabalho estiver em um estado não terminal, execute o loop novamente.
-
-
Pare quando o trabalho atingir um estado terminal (sucesso, falha).