Métodos de API de otimização sem bloqueio únicos

Este guia apresenta o lançamento experimental dos métodos de API OptimizeToursLongRunning e OptimizeToursUri, que permitem aos usuários fazer solicitações de otimização únicas sem bloqueio. Em uma otimização sem bloqueio, o usuário recebe rapidamente um proto de operação do método que pode ser usado para referenciar o status da otimização chamando GetOperation. Consulte Operações de longa duração para mais detalhes.

Esses métodos não bloqueadores oferecem os benefícios de confiabilidade em relação ao método de bloqueio OptimizeTours, já que o cliente não precisa manter a conexão com o servidor enquanto a otimização está sendo executada. Além disso, esses novos métodos facilitam a depuração de falhas em comparação com BatchOptimizeTours, já que cada otimização está associada a uma única operação de longa duração (LRO).

Os usuários que preferem inserir a solicitação de otimização podem usar o método OptimizeToursLongRunning, enquanto aqueles que preferem fazer upload das solicitações e da resposta de leitura usando o Google Cloud Storage podem usar o método OptimizeToursUri.

OptimizeToursLongRunning

Exemplo: fazer uma solicitação OptimizeToursLongRunning

Antes de fazer uma solicitação, substitua os seguintes parâmetros por valores adequados para seu ambiente:

  • Verifique se você configurou as Application Default Credentials conforme descrito em Usar o OAuth.
  • Defina PROJECT_NUMBER_OR_ID como o número ou ID do projeto do Cloud.

    O comando a seguir envia uma solicitação OptimizeToursLongRunning para a API Route Optimization e recebe um ID de operação associado a ela. O método GetOperation pode ser usado para consultar o status da operação. Quando a operação for concluída, os metadados também vão conter o OptimizeToursResponse final.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursLongRunning' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "model": {
        "shipments": [
          {
            "pickups": [
              {
                "arrivalLocation": {
                  "latitude": 37.42506261000996,
                  "longitude": -122.09535511930135
                }
              }
            ],
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.42421503206021,
                  "longitude": -122.09526063135228
                }
              }
            ]
          }
        ],
        "vehicles": [
          {
            "travelMode": "DRIVING",
            "costPerKilometer": 1.0
          }
        ],
      }
    }
    EOM

OptimizeToursUri

Assim como BatchOptimizeTours, você pode usar OptimizeToursUri para continuar armazenando sua solicitação e resposta de otimização no Google Cloud Storage. Os URIs do Cloud Storage precisam ser especificados na mensagem de solicitação OptimizeToursUri. O status Operation retornado está associado apenas ao único OptimizeToursRequest enviado.

Exemplo: fazer uma solicitação OptimizeToursUri

Antes de fazer uma solicitação, substitua os seguintes parâmetros por valores adequados para seu ambiente:

  • Verifique se você configurou as Application Default Credentials conforme descrito em Usar o OAuth.
  • Defina PROJECT_NUMBER_OR_ID como o número ou ID do projeto do Cloud.

    O comando a seguir envia uma solicitação OptimizeToursUri para a API Route Optimization e recebe um ID de operação associado a ela. Use o método GetOperation para consultar o status da operação. Quando a operação for concluída, o OptimizeToursResponse será armazenado remotamente no caminho do URI de saída fornecido na solicitação.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursUri' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "input": {
        "uri": "gs://bucket/path/input/object.json"
      },
      "output": {
        "uri": "gs://bucket/path/output/object.json"
      }
    }
    EOM