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