Méthodes d'API d'optimisation non bloquantes

Ce guide présente le lancement expérimental des méthodes d'API OptimizeToursLongRunning et OptimizeToursUri, qui permettent aux utilisateurs d'envoyer des demandes d'optimisation uniques et non bloquantes. Dans une optimisation non bloquante, l'utilisateur reçoit rapidement un proto Operation de la méthode qui peut être utilisé pour référencer l'état de l'optimisation en appelant GetOperation. Pour en savoir plus, consultez Opérations de longue durée.

Ces méthodes non bloquantes offrent des avantages en termes de fiabilité par rapport à la méthode bloquante OptimizeTours, car le client n'a pas besoin de maintenir la connexion au serveur pendant l'exécution de l'optimisation. De plus, ces nouvelles méthodes facilitent le débogage des échecs par rapport à BatchOptimizeTours, car chaque optimisation est associée à une seule opération de longue durée (LRO).

Les utilisateurs qui préfèrent intégrer la demande d'optimisation peuvent utiliser la méthode OptimizeToursLongRunning, tandis que ceux qui préfèrent importer les demandes et lire la réponse à l'aide de Google Cloud Storage peuvent utiliser la méthode OptimizeToursUri.

OptimizeToursLongRunning

Exemple : Envoyer une requête OptimizeToursLongRunning

Avant d'envoyer une requête, remplacez les paramètres suivants par des valeurs adaptées à votre environnement :

  • Assurez-vous d'avoir configuré les identifiants par défaut de l'application comme décrit dans Utiliser OAuth.
  • Définissez PROJECT_NUMBER_OR_ID sur le numéro ou l'ID de votre projet Cloud.

    La commande suivante envoie une requête OptimizeToursLongRunning à l'API Route Optimization et reçoit un ID d'opération associé. La méthode GetOperation permet d'interroger l'état de l'opération. Une fois l'opération terminée, les métadonnées contiennent également le OptimizeToursResponse final.

    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

Comme pour BatchOptimizeTours, vous pouvez utiliser OptimizeToursUri pour continuer à stocker votre demande et votre réponse d'optimisation sur Google Cloud Storage. Les URI Cloud Storage doivent être spécifiés dans le message de requête OptimizeToursUri. L'état Operation renvoyé n'est associé qu'à la seule OptimizeToursRequest envoyée.

Exemple : Envoyer une requête OptimizeToursUri

Avant d'envoyer une requête, remplacez les paramètres suivants par des valeurs adaptées à votre environnement :

  • Assurez-vous d'avoir configuré les identifiants par défaut de l'application comme décrit dans Utiliser OAuth.
  • Définissez PROJECT_NUMBER_OR_ID sur le numéro ou l'ID de votre projet Cloud.

    La commande suivante envoie une requête OptimizeToursUri à l'API Route Optimization et reçoit un ID d'opération associé. Utilisez la méthode GetOperation pour interroger l'état de l'opération. Une fois l'opération terminée, le OptimizeToursResponse est stocké à distance sur le chemin d'accès de l'URI de sortie fourni dans la requête.

    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