В этом руководстве описывается экспериментальный запуск методов 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