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.