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

تُجري العديد من طرق واجهة برمجة التطبيقات على "مساحة العرض والفيديو 360" عمليات معقدة قد يستغرق إكمالها وقتًا أطول من بضع ثوانٍ. قد تتجاوز الطلبات إلى هذه الطرق أحيانًا وقت الاستجابة المتوقع، ما يؤدي إلى حدوث أخطاء في واجهة برمجة التطبيقات أو من جهة العميل. تسرد هذه الصفحة ممارسات التعامل مع المشكلات الناتجة عن وقت استجابة الطلب الممتد.

زيادة المهلة التلقائية في مكتبة العملاء

تم تصنيف عدد قليل من الطرق المحددة في وثائقهم المرجعية على أنها تتجاوز وقت الاستجابة المتوقع بانتظام. يمكن أن تظهر الطرق الأخرى أيضًا سلوكًا ذا وقت استجابة مرتفع بشكل دوري.

قد تؤدي حدود المهلة التلقائية لبعض مكتبات العميل إلى حدوث أخطاء عند إجراء طلبات زمن الانتقال السريع. المهلات الافتراضية لمجموعة فرعية من مكتبات العملاء المتوافقة هي:

  • 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. وظيفة الاستدعاء عند إنشاء برنامج "مساحة العرض والفيديو 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 لمكتبة برامج Google API Python.

    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.

    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.

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

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