Como trabalhar com operações de longa duração

Nesta página, descrevemos como lidar com operações de longa duração no AutoML Natural Language.

Introdução

Algumas operações no AutoML Natural Language precisam de tempo para serem concluídas:

  • datasets.importData
  • datasets.exportData
  • datasets.delete
  • models.batchPredict
  • models.create
  • models.delete
  • models.deploy
  • models.undeploy

Se você estiver usando a interface do usuário do AutoML Natural Language, é possível fechar a janela do navegador sem afetar a operação. O painel é atualizado quando a operação é concluída.

Quando você faz uma chamada de API que leva muito tempo para ser concluída, a chamada inicial retorna imediatamente, mesmo que a operação ainda esteja sendo executada. Há alguns métodos auxiliares que podem ser usados para determinar o status de uma operação de longa duração.

O AutoML Natural Language envia aos proprietários do projeto um e-mail quando as operações de longa duração são concluídas.

Como pesquisar o status de uma operação

É possível pesquisar o status de uma operação de longa duração. Essa abordagem não bloqueia o programa, mas é necessário continuar pesquisando até que a operação seja concluída.

Para ver o status da operação, use o código dela recebido na resposta quando você a iniciou.

No comando abaixo, substitua operation-name pelo nome completo da operação. O nome completo tem o formato projects/{project-id}/locations/us-central1/operations/{operation-id}.

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1/operation-name

Para operações de importação, é exibida uma saída similar à seguinte: na saída, há um objeto metadata com informações específicas ao tipo de solicitação. O campo done mostra se a operação foi concluída ou não. Se a operação estiver concluída, a resposta conterá informações sobre o efeito da solicitação.

{
  "name": "projects/1234/locations/us-central1/operations/TBL2126599795587061786",
  "metadata": {
...
  },
  "done": true,
  "response": {
...
  }
}

Como alterar o tempo de espera de uma operação

Se você quiser bloquear a execução na operação, aguarde a conclusão dela ou especifique um tempo limite.

No comando abaixo, substitua:

  • operation-name pelo nome completo da operação. O nome completo tem o formato projects/{project-id}/locations/us-central1/operations/{operation-id}.

  • timeout pelo tempo máximo que você quer esperar, em (fracionário) segundos, encerrado por "s". Por exemplo, inserir “4,5s” faz com que o comando de espera retorne em 4,5 segundos se a operação ainda estiver sendo executada.

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
   -d '{"timeout":"timeout"}' \
  https://automl.googleapis.com/v1/operation-name:wait

Como cancelar uma operação

É possível cancelar uma tarefa de importação ou treinamento, basta usar o ID da operação. Não há garantia de que a operação será realmente cancelada. Não é possível cancelar uma operação.

No comando abaixo, substitua operation-name pelo nome completo da operação. O nome completo tem o formato projects/{project-id}/locations/us-central1/operations/{operation-id}.

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  https://automl.googleapis.com/v1/operation-name:cancel