Единые методы API неблокирующей оптимизации

В этом руководстве описывается экспериментальный запуск методов API OptimizeToursLongRunning и OptimizeToursUri , позволяющих пользователям выполнять одиночные неблокирующие запросы на оптимизацию. В неблокирующей оптимизации пользователь быстро получает от метода прототип операции, который можно использовать для отслеживания статуса оптимизации, вызвав GetOperation . Дополнительные сведения см. в разделе «Длительные операции» .

Эти неблокирующие методы обеспечивают преимущества в надежности по сравнению с блокирующим методом OptimizeTours , поскольку клиенту не нужно поддерживать соединение с сервером во время выполнения оптимизации. Кроме того, эти новые методы упрощают отладку сбоев по сравнению с BatchOptimizeTours , поскольку каждая оптимизация связана с одной длительной операцией (LRO).

Пользователи, предпочитающие встраивать запрос на оптимизацию непосредственно в файл, могут использовать метод OptimizeToursLongRunning , а пользователи, предпочитающие загружать запросы и ответы на них в Google Cloud Storage, могут использовать метод OptimizeToursUri .

OptimizeToursLongRunning

Пример: Выполните запрос OptimizeToursLongRunning

Перед отправкой запроса замените следующие параметры значениями, подходящими для вашей среды:

  • Убедитесь, что для приложения настроены учетные данные по умолчанию , как описано в разделе «Использование OAuth» .
  • Установите значение PROJECT_NUMBER_OR_ID равным номеру или идентификатору вашего облачного проекта.

    Следующая команда отправляет запрос OptimizeToursLongRunning в API оптимизации маршрутов и получает связанный с ним идентификатор операции. Метод GetOperation можно использовать для запроса статуса операции. После завершения операции метаданные также содержат окончательный ответ OptimizeToursResponse .

    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

Подобно BatchOptimizeTours , вы можете использовать OptimizeToursUri для дальнейшего хранения запроса и ответа на оптимизацию в Google Cloud Storage. URI Cloud Storage должны быть указаны в сообщении запроса OptimizeToursUri . Возвращаемый статус Operation связан только с одним отправленным запросом OptimizeToursRequest .

Пример: Выполните запрос OptimizeToursUri

Перед отправкой запроса замените следующие параметры значениями, подходящими для вашей среды:

  • Убедитесь, что для приложения настроены учетные данные по умолчанию , как описано в разделе «Использование OAuth» .
  • Установите значение PROJECT_NUMBER_OR_ID равным номеру или идентификатору вашего облачного проекта.

    Следующая команда отправляет запрос OptimizeToursUri в API оптимизации маршрутов и получает связанный с ним идентификатор операции. Используйте метод GetOperation для запроса статуса операции. После завершения операции объект OptimizeToursResponse сохраняется удаленно по указанному в запросе пути URI.

    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