W tym przewodniku opisujemy eksperymentalne wdrożenie metod interfejsu API OptimizeToursLongRunning i OptimizeToursUri, które umożliwiają użytkownikom wysyłanie pojedynczych nieblokujących próśb o optymalizację. W przypadku optymalizacji nieblokującej użytkownik szybko otrzymuje z metody protokół operacji, którego może użyć do odwołania się do stanu optymalizacji, wywołując funkcję GetOperation.
Więcej informacji znajdziesz w artykule Długotrwałe operacje.
Te metody nieblokujące zapewniają większą niezawodność niż metoda blokująca OptimizeTours, ponieważ klient nie musi utrzymywać połączenia z serwerem podczas wykonywania optymalizacji. Nowe metody ułatwiają też debugowanie niepowodzeń w porównaniu z metodą BatchOptimizeTours, ponieważ każda optymalizacja jest powiązana z jedną długotrwałą operacją (LRO).
Użytkownicy, którzy wolą umieszczać żądanie optymalizacji w dokumentie, mogą użyć metody OptimizeToursLongRunning, a użytkownicy, którzy wolą przesyłać żądania i odpowiedzi na odczyt za pomocą Google Cloud Storage, mogą użyć metody OptimizeToursUri.
OptimizeToursLongRunning
Przykład: wysłanie OptimizeToursLongRunning
Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:
- Upewnij się, że domyślne dane logowania aplikacji są skonfigurowane zgodnie z opisem w artykule Korzystanie z protokołu OAuth.
Ustaw wartość PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.
Podane niżej polecenie wysyła do interfejsu Route Optimization API żądanie
OptimizeToursLongRunningi otrzymuje powiązany z nim identyfikator operacji. MetodyGetOperationmożna używać do uzyskiwania informacji o stanie operacji. Po zakończeniu operacji metadane zawierają również ostateczną wartość parametruOptimizeToursResponse.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
Podobnie jak BatchOptimizeTours możesz użyć OptimizeToursUri, aby nadal przechowywać żądanie optymalizacji i odpowiedź w Google Cloud Storage.
Identyfikatory URI Cloud Storage muszą być określone w wiadomości OptimizeToursUri.
Zwrócony stan Operation jest powiązany tylko z jednym przesłanym plikiem OptimizeToursRequest.
Przykład: wysłanie OptimizeToursUri
Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:
- Upewnij się, że domyślne dane logowania aplikacji są skonfigurowane zgodnie z opisem w artykule Korzystanie z protokołu OAuth.
Ustaw wartość PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.
Podane niżej polecenie wysyła do interfejsu Route Optimization API żądanie
OptimizeToursUrii otrzymuje powiązany z nim identyfikator operacji. Aby sprawdzić stan operacji, użyj metodyGetOperation. Po zakończeniu operacjiOptimizeToursResponsejest przechowywany zdalnie na ścieżce URI wyjściowego podanej w żądaniu.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