Для каждого сервиса в клиентской библиотеке 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.