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

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

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

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

ОптимизироватьТурыДлительный бег

Пример. Сделайте запрос 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

ОптимизироватьТурУри

Как и BatchOptimizeTours , вы можете использовать OptimizeToursUri , чтобы продолжать хранить свой запрос на оптимизацию и ответ в облачном хранилище Google. 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