إعداد المُهل وعمليات إعادة المحاولة

العديد من الإعلانات الصورية تُجري طرق Video 360 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. إنشاء دالة لضبط مهلة 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. وظيفة الاتصال عند إنشاء شاشة العرض برنامج 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();
    

Python

  1. استيراد وحدة http لمكتبة برامج Python في Google API

    from googleapiclient import http
    
  2. تعديل ثابت المهلة التلقائية:

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. إنشاء خدمة واجهة برمجة التطبيقات:

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

PHP

  1. يمكنك تنزيل مكتبة Guzzle HTTP وتثبيتها باستخدام الملحن:

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

التعامل مع أخطاء مهلة واجهة برمجة التطبيقات

في بعض الحالات النادرة، قد تتجاوز الطلبات المكتملة عمليات معقدة مهلة جهة الخادم لمدة 180 ثانية، ما أدى إلى عرض واجهة برمجة التطبيقات 408 أو 504 خطأ.

في حال استجابة الطلب لأي من رمزي الخطأ هذين، نقترح عليك أعِد محاولة تنفيذ هذه الطلبات باستخدام استراتيجية التراجع الأسي.

وفي حال استمرار ظهور الخطأ، يُرجى التواصل مع فريق الدعم باستخدام نموذج التواصل.