이러한 비차단 메서드는 최적화가 실행되는 동안 클라이언트가 서버에 대한 연결을 유지할 필요가 없으므로 차단 OptimizeTours 메서드보다 안정성 이점을 제공합니다. 또한 각 최적화가 단일 장기 실행 작업 (LRO)과 연결되어 있으므로 이러한 새 메서드를 사용하면 BatchOptimizeTours에 비해 실패를 더 쉽게 디버그할 수 있습니다.
다음 명령어는 Route Optimization API에 OptimizeToursLongRunning 요청을 전송하고 이와 연결된 작업 ID를 수신합니다. GetOperation 메서드를 사용하여 작업 상태를 쿼리할 수 있습니다.
작업이 완료되면 메타데이터에 최종 OptimizeToursResponse도 포함됩니다.
BatchOptimizeTours와 마찬가지로 OptimizeToursUri를 사용하여 Google Cloud Storage에 최적화 요청과 응답을 계속 저장할 수 있습니다.
Cloud Storage URI는 OptimizeToursUri 요청 메시지에 지정해야 합니다.
반환된 Operation 상태는 제출된 단일 OptimizeToursRequest에만 연결됩니다.
다음 명령어는 Route Optimization API에 OptimizeToursUri 요청을 전송하고 이와 연결된 작업 ID를 수신합니다. GetOperation 메서드를 사용하여 작업 상태를 쿼리합니다.
작업이 완료되면 OptimizeToursResponse이 요청에 제공된 출력 URI 경로에 원격으로 저장됩니다.
[null,null,["최종 업데이트: 2025-08-29(UTC)"],[[["\u003cp\u003eThis guide introduces \u003ccode\u003eOptimizeToursLongRunning\u003c/code\u003e and \u003ccode\u003eOptimizeToursUri\u003c/code\u003e, new methods that enhance reliability and optionally remove the dependency on Google Cloud Storage compared to \u003ccode\u003eBatchOptimizeTours\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeToursLongRunning\u003c/code\u003e allows for inline optimization requests without requiring Google Cloud Storage and each request is tracked by its own individual LRO.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeToursUri\u003c/code\u003e offers the option to continue using Google Cloud Storage for request and response storage, with the benefit of each request having its own LRO.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eBatchOptimizeTours\u003c/code\u003e method, while still supported, requires all requests and responses to be stored on Google Cloud Storage and only provides one LRO for all the requests.\u003c/p\u003e\n"]]],[],null,["\u003cbr /\u003e\n\n| This product or feature is Experimental (pre-GA). Pre-GA products and features might have limited support, and changes to pre-GA products and features might not be compatible with other pre-GA versions. Pre-GA Offerings are covered by the [Google\n| Maps Platform Service Specific Terms](https://cloud.google.com/maps-platform/terms/maps-service-terms). For more information, see the [launch stage descriptions](/maps/launch-stages).\n\n\u003cbr /\u003e\n\nThis guide introduces the experimental launch of the [`OptimizeToursLongRunning`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursLongRunning)\nand [`OptimizeToursUri`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursUri) API methods that allow users to make single\nnon-blocking optimization requests. In a non-blocking optimization, the user\nquickly receives a Operation proto from the method that can be used\nto reference the status of the optimization by calling [`GetOperation`](/maps/documentation/route-optimization/reference/rpc/google.longrunning#google.longrunning.Operations.GetOperation).\nSee [Long Running Operations](https://developers.google.com/maps/documentation/route-optimization/sync-vs-async#long_running_operations)\nfor more details.\n\nThese non-blocking methods provide the\nreliability benefits over the blocking [`OptimizeTours`](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeTours) method since the\nclient does not need to maintain connection to the server while the optimization\nis being executed. Also, these new methods make it easier to debug\nfailures compared to [`BatchOptimizeTours`](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.BatchOptimizeTours) since each optimization is\nassociated with a single Long-Running Operation (LRO).\n\nUsers who prefer to inline the optimization request can use the\n[`OptimizeToursLongRunning`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursLongRunning) method while users who prefer to upload the\nrequests and the read response using Google Cloud Storage can use the\n[`OptimizeToursUri`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursUri) method.\n\nOptimizeToursLongRunning\n\nExample: Make an `OptimizeToursLongRunning` request\n\nBefore making a request, replace the following parameters with values\nappropriate for your environment:\n\n- Ensure you have [Application Default Credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc) configured as described in [Use OAuth](/maps/documentation/route-optimization/oauth-token).\n- Set \u003cvar label=\"project_number\" translate=\"no\"\u003ePROJECT_NUMBER_OR_ID\u003c/var\u003e to your Cloud\n project number or ID.\n\n The following command sends an `OptimizeToursLongRunning` request to the\n Route Optimization API and receives an operation ID associated with it. The\n [`GetOperation`](/maps/documentation/route-optimization/reference/rpc/google.longrunning#google.longrunning.Operations.GetOperation) method can be used to query the status of the operation.\n Once the operation completes, the metadata also contains the final\n [`OptimizeToursResponse`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#optimizetoursresponse). \n\n ```scdoc\n curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursLongRunning' \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n --data @- \u003c\u003cEOM\n {\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.42506261000996,\n \"longitude\": -122.09535511930135\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.42421503206021,\n \"longitude\": -122.09526063135228\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"travelMode\": \"DRIVING\",\n \"costPerKilometer\": 1.0\n }\n ],\n }\n }\n EOM\n ```\n | **Note:** this example uses the `--data @-` to read a request from standard input. Use `--data @`\u003cvar label=\"curl_filename\" translate=\"no\"\u003eFilename\u003c/var\u003e to read from a file.\n\nOptimizeToursUri\n\nLike `BatchOptimizeTours`, you can use [`OptimizeToursUri`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursUri) to continue\nstoring your optimization request and response on Google Cloud Storage.\nCloud Storage URIs must be specified in the `OptimizeToursUri` request message.\nThe `Operation` status returned is associated only with the single submitted\n`OptimizeToursRequest`.\n\nExample: Make an `OptimizeToursUri` request\n\nBefore making a request, replace the following parameters with values\nappropriate for your environment:\n\n- Ensure you have [Application Default Credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc) configured as described in [Use OAuth](/maps/documentation/route-optimization/oauth-token).\n- Set \u003cvar label=\"project_number\" translate=\"no\"\u003ePROJECT_NUMBER_OR_ID\u003c/var\u003e to your Cloud\n project number or ID.\n\n The following command sends an `OptimizeToursUri` request to the\n Route Optimization API and receives an operation ID associated with it. Use\n the [`GetOperation`](/maps/documentation/route-optimization/reference/rpc/google.longrunning#google.longrunning.Operations.GetOperation) method to query the status of the operation.\n Once the operation completes, the [`OptimizeToursResponse`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#optimizetoursresponse) is stored\n remotely on the output URI path provided in the request. \n\n ```scdoc\n curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursUri' \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n --data @- \u003c\u003cEOM\n {\n \"input\": {\n \"uri\": \"gs://bucket/path/input/object.json\"\n },\n \"output\": {\n \"uri\": \"gs://bucket/path/output/object.json\"\n }\n }\n EOM\n ```\n | **Note:** this example uses the `--data @-` to read a request from standard input. Use `--data @`\u003cvar label=\"curl_filename\" translate=\"no\"\u003eFilename\u003c/var\u003e to read from a file."]]