บริการแต่ละรายการในไลบรารีของไคลเอ็นต์ 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
ขีดจำกัดการหมดเวลาและข้อผิดพลาด
แม้ว่าคุณจะเพิ่มระยะหมดเวลาของไคลเอ็นต์ได้ แต่ขีดจำกัดฝั่งเซิร์ฟเวอร์จะยังคงมีผลอยู่ คำขอที่ใช้เวลานานกว่า 2 ชั่วโมงอาจดำเนินการไม่สำเร็จและทำให้เกิดข้อยกเว้น Google::Ads::GoogleAds::Errors::GoogleAdsError หรือ GRPC::DeadlineExceeded พร้อมสถานะ DEADLINE_EXCEEDED