Timeout

Ogni servizio nella libreria client Ruby è dotato di un criterio di timeout e di nuovi tentativi predefinito specificato nel file client.rb del servizio. Ad esempio, puoi esaminare il metodo self.configure nella configurazione client CampaignService.

Esegui l'override dei timeout predefiniti

Puoi eseguire l'override di questi valori predefiniti su un'istanza di servizio dopo averla creata impostando config.timeout a livello di servizio (in secondi) o configurando timeout e retry_policy per i singoli metodi RPC su 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

Per uno script funzionante completo, consulta l'esempio di codice set_custom_client_timeouts.rb su GitHub.

Limiti ed errori di timeout

Sebbene sia possibile aumentare la durata del timeout del client, i limiti lato server continuano ad essere applicati. Le richieste che richiedono più di due ore potrebbero non riuscire e generare un'eccezione Google::Ads::GoogleAds::Errors::GoogleAdsError o GRPC::DeadlineExceeded con uno stato DEADLINE_EXCEEDED.