חסימות זמניות

לכל שירות בספריית הלקוח של Ruby יש מדיניות ברירת מחדל של פסק זמן וניסיון חוזר שמוגדרת בקובץ client.rb של אותו שירות. לדוגמה, אפשר לבדוק את השיטה self.configure בהגדרות הלקוח של CampaignService.

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

אפשר לשנות את ברירות המחדל האלה במופע של שירות אחרי שיוצרים אותו, על ידי הגדרת config.timeout ברמת השירות (בשניות) או על ידי הגדרת timeout ו-retry_policy לשיטות RPC ספציפיות ב-config.rpcs:

require 'google/ads/google_ads'

client = Google::Ads::GoogleAds::GoogleAdsClient.new
ga_service = client.service.google_ads

ga_service.configure do |config|
  # Set the default timeout (in seconds) for all RPCs on this service instance.
  config.timeout = 120.0

  # Override the timeout or retry policy for specific RPC methods.
  config.rpcs.search_stream.timeout = 300.0
  config.rpcs.search.timeout = 120.0
  config.rpcs.search.retry_policy = {
    'initial_delay' => 5.0,
    'max_delay' => 60.0
  }
end

סקריפט עובד מלא מופיע בדוגמת הקוד set_custom_client_timeouts.rb ב-GitHub.

מגבלות זמן קצוב ושגיאות

אפשר להאריך את משך הזמן הקצוב לתפוגה של הלקוח, אבל עדיין חלות מגבלות בצד השרת. בקשות שנמשכות יותר משעתיים עלולות להיכשל ולהעלות חריגה Google::Ads::GoogleAds::Errors::GoogleAdsError או GRPC::DeadlineExceeded עם סטטוס DEADLINE_EXCEEDED.