שיטות API בודדות ללא חסימה לאופטימיזציה

במדריך הזה אנחנו מציגים את ההשקה הניסיונית של שיטות ה-API‏ OptimizeToursLongRunning ו-OptimizeToursUri, שמאפשרות למשתמשים לשלוח בקשות אופטימיזציה יחידות ולא חוסמות. באופטימיזציה לא חוסמת, המשתמש מקבל במהירות פרוטוקול של פעולה מהשיטה שאפשר להשתמש בה כדי להפנות לסטטוס של האופטימיזציה על ידי קריאה ל-GetOperation. פרטים נוספים זמינים במאמר בנושא פעולות ממושכות.

השיטות האלה לא חוסמות את התהליך, והן מספקות יתרונות של אמינות לעומת השיטה שחוסמת את התהליך OptimizeTours, כי הלקוח לא צריך לשמור על חיבור לשרת בזמן שהאופטימיזציה מתבצעת. בנוסף, השיטות החדשות האלה מקלות על איתור באגים בבעיות בהשוואה ל-BatchOptimizeTours, כי כל אופטימיזציה משויכת לפעולה אחת ארוכת טווח (LRO).

משתמשים שמעדיפים להוסיף את בקשת האופטימיזציה בתוך שורה יכולים להשתמש בשיטה OptimizeToursLongRunning, ומשתמשים שמעדיפים להעלות את הבקשות ואת תגובת הקריאה באמצעות Google Cloud Storage יכולים להשתמש בשיטה OptimizeToursUri.

OptimizeToursLongRunning

דוגמה: יצירת בקשת OptimizeToursLongRunning

לפני ששולחים בקשה, מחליפים את הפרמטרים הבאים בערכים שמתאימים לסביבה שלכם:

  • מוודאים שהשירות Application Default Credentials מוגדר כמו שמתואר במאמר שימוש ב-OAuth.
  • מגדירים את PROJECT_NUMBER_OR_ID למספר או למזהה של הפרויקט ב-Cloud.

    הפקודה הבאה שולחת בקשת OptimizeToursLongRunning ל-Route Optimization 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 שמוחזר משויך רק ל-Operation הבודד שנשלח.OptimizeToursRequest

דוגמה: יצירת בקשת OptimizeToursUri

לפני ששולחים בקשה, מחליפים את הפרמטרים הבאים בערכים שמתאימים לסביבה שלכם:

  • מוודאים שהשירות Application Default Credentials מוגדר כמו שמתואר במאמר שימוש ב-OAuth.
  • מגדירים את PROJECT_NUMBER_OR_ID למספר או למזהה של הפרויקט ב-Cloud.

    הפקודה הבאה שולחת בקשת OptimizeToursUri ל-Route Optimization 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