הגדרת פסקי זמן וניסיונות חוזרים

הרבה מודעות לרשת המדיה ב-methods של Video 360 API מתבצעות פעולות מורכבות שעשויות להימשך זמן רב יותר כמה שניות עד שתשלימו את התהליך. לפעמים בקשות שנשלחות לשיטות האלה יכולות להיות גבוהות יותר זמן אחזור צפוי שגורם לשגיאות ב-API או בצד הלקוח. בדף הזה מופיעה רשימה שיטות לטיפול בבעיות שנגרמות בגלל זמן אחזור ארוך של הבקשה.

הגדלה של הזמן הקצוב לתפוגה שמוגדר כברירת מחדל בספריית הלקוח

מספר שיטות ספציפיות תויגו במסמכי התיעוד שלהן. שהוא חורג באופן קבוע מזמן האחזור הצפוי. גם שיטות אחרות יכולות להראות זמן אחזור ארוך מדי פעם.

מגבלות ברירת המחדל של הזמן הקצוב לתפוגה בחלק מספריות הלקוח עלולות לגרום לשגיאות כאשר שליחת בקשות עם זמן אחזור גבוה. ברירת מחדל של זמנים קצובים לתפוגה עבור קבוצת משנה של לקוח נתמך ספריות הן:

  • Java: 20 שניות
  • Python: 60 שניות
  • PHP: 60 שניות

כדי למנוע זמנים קצובים לתפוגה בצד הלקוח, אפשר להגדיל את הזמן הקצוב לתפוגה שהוגדר כברירת מחדל. הוספה למעקב כדי להתאים את ברירת המחדל של הזמן הקצוב לתפוגה של ספריית הלקוח במהלך סביבת זמן ריצה:

Java

  1. מייבאים את המשאבים הדרושים.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. פונקציית Build להגדרת זמן קצוב לתפוגה של HTTP.

    /**
     * Adjusts HTTP timeout values used by the provided request initializer.
     *
     * @param requestInitializer The {@link HttpRequestInitializer} used to authorize requests.
     * @param newHttpTimeout The HTTP timeout for requests in seconds.
     * @return An {@link HttpRequestInitializer} with modified HTTP timeout values.
     */
    private static HttpRequestInitializer setHttpTimeout(
        final HttpRequestInitializer requestInitializer,
        final int newHttpTimeout) {
      return new HttpRequestInitializer() {
        @Override
        public void initialize(HttpRequest httpRequest) throws IOException {
          requestInitializer.initialize(httpRequest);
          httpRequest.setConnectTimeout(newHttpTimeout * 1_000);
          httpRequest.setReadTimeout(newHttpTimeout * 1_000);
        }
      };
    }
    
  3. פונקציית השיחה בזמן היצירה של לקוח API של Video 360.

    // Create authorized API client with non-default timeouts.
    DisplayVideo service =
        new DisplayVideo.Builder(
            credential.getTransport(),
            credential.getJsonFactory(),
            setHttpTimeout(credential, http-timeout-in-seconds)
        )
            .setApplicationName("displayvideo-java-installed-app-sample")
            .build();
    

Python

  1. מייבאים את מודול http של ספריית הלקוח של Python אל Google API.

    from googleapiclient import http
    
  2. עדכון קבוע של ברירת המחדל לזמן הקצוב לתפוגה.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. יצירת שירות API

    # Build the API service.
    service = discovery.build(
      'displayvideo',
      'v3',
      discoveryServiceUrl=discovery_url,
      credentials=credentials)
    

PHP

  1. מורידים ומתקינים את ספריית Guzzle HTTP באמצעות Composer.

    composer require guzzlehttp/guzzle:^7.0
  2. יצירת לקוח Guzzle HTTP, והקצאת ערך של זמן קצוב לתפוגה.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. יוצרים לקוח Google ומקצים לקוח Guzzle HTTP.

    $client = new Google_Client();
    $client->setHttpClient($httpClient);
    

טיפול בשגיאות של הזמן הקצוב לתפוגה של API

במקרים נדירים, בקשות שמבצעות פעולות מורכבות יכולות לחרוג הזמן הקצוב לתפוגה בצד השרת הוא 180 שניות, שגורם ל-API להחזיר 408 או 504 עם שגיאה.

אם בקשה מסוימת מקבלת תשובה עם אחד מקודי השגיאה האלה, מומלץ לנסות לשלוח שוב את הבקשות האלה באמצעות אסטרטגיית השהיה מעריכית לפני ניסיון חוזר.

אם השגיאה נמשכת, יש לפנות לתמיכה באמצעות הטופס ליצירת קשר.