زمان‌بندی و تلاش‌های مجدد را پیکربندی کنید

بسیاری از روش‌های Display & Video 360 API عملیات پیچیده‌ای را انجام می‌دهند که ممکن است بیش از چند ثانیه طول بکشد. درخواست‌ها برای این روش‌ها گاهی اوقات می‌تواند از تأخیر مورد انتظار فراتر رود و باعث ایجاد خطا در سمت API یا مشتری شود. این صفحه شیوه هایی را برای رسیدگی به مشکلات ناشی از تاخیر طولانی درخواست فهرست می کند.

افزایش زمان پیش‌فرض در کتابخانه مشتری

تعداد انگشت شماری از روش‌های خاص در مستندات مرجع خود به‌عنوان بیش از تأخیر مورد انتظار به طور منظم برچسب‌گذاری شده‌اند. روش‌های دیگر نیز می‌توانند به صورت دوره‌ای رفتار با تأخیر بالا از خود نشان دهند.

محدودیت زمانی پیش‌فرض برای برخی از کتابخانه‌های سرویس گیرنده می‌تواند منجر به خطا در هنگام درخواست‌های با تأخیر بالا شود. زمان های پیش فرض برای زیر مجموعه ای از کتابخانه های سرویس گیرنده پشتیبانی شده عبارتند از:

  • جاوا : 20 ثانیه
  • پایتون : 60 ثانیه
  • PHP : 60 ثانیه

با افزایش این مهلت‌های پیش‌فرض می‌توان از وقفه‌های زمانی سمت مشتری جلوگیری کرد. برای تنظیم مهلت زمانی پیش‌فرض برای کتابخانه مشتری خود در طول زمان اجرا، این دستورالعمل‌ها را دنبال کنید:

جاوا

  1. واردات منابع لازم

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. عملکرد ساخت برای تنظیم زمان 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. هنگام ایجاد کلاینت Display & Video 360 API عملکرد فراخوانی را انجام دهید.

    // 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();
    

پایتون

  1. ماژول http کتابخانه کلاینت Google API Python را وارد کنید.

    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. کتابخانه HTTP Guzzle را با استفاده از 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 را برگرداند.

اگر درخواستی با یکی از این کدهای خطا پاسخ می‌دهد، توصیه می‌کنیم با استفاده از استراتژی عقب‌نشینی نمایی دوباره این درخواست‌ها را امتحان کنید.

اگر خطا ادامه داشت، با استفاده از فرم تماس با پشتیبانی تماس بگیرید.