Timeout

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

Sostituisci i timeout predefiniti

Puoi sostituire questi valori predefiniti in un'istanza di servizio dopo averla creata impostando config.timeout a livello di servizio (in secondi) o configurando timeout e retry_policy per 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 di timeout ed errori

Sebbene tu possa aumentare la durata del timeout del client, i limiti lato server rimangono validi. Le richieste che richiedono più di due ore potrebbero non andare a buon fine e generare un'eccezione Google::Ads::GoogleAds::Errors::GoogleAdsError o GRPC::DeadlineExceeded con stato DEADLINE_EXCEEDED.