Cada servicio de la biblioteca cliente de Ruby incluye un tiempo de espera predeterminado y una política de reintentos especificados en el archivo client.rb de ese servicio. Por ejemplo, puedes inspeccionar el método self.configure en la configuración del cliente CampaignService.
Anula los tiempos de espera predeterminados
Puedes anular estos valores predeterminados en una instancia de servicio después de crearla configurando config.timeout a nivel del servicio (en segundos) o configurando timeout y retry_policy para métodos de RPC individuales en 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
Para ver una secuencia de comandos completa y en funcionamiento, consulta el ejemplo de código de set_custom_client_timeouts.rb en GitHub.
Límites de tiempo de espera y errores
Si bien puedes aumentar la duración del tiempo de espera del cliente, los límites del servidor seguirán aplicándose. Las solicitudes que tardan más de dos horas pueden fallar y generar una excepción Google::Ads::GoogleAds::Errors::GoogleAdsError o GRPC::DeadlineExceeded con un estado DEADLINE_EXCEEDED.