Tempo limite

Cada serviço na biblioteca de cliente do Ruby vem com um tempo limite padrão e uma política de novas tentativas especificados no arquivo client.rb desse serviço. Por exemplo, é possível inspecionar o método self.configure na configuração do cliente CampaignService.

Substituir os tempos limite padrão

É possível substituir esses padrões em uma instância de serviço depois de instanciá-la definindo o config.timeout no nível do serviço (em segundos) ou configurando timeout e retry_policy para métodos RPC individuais em 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 um script funcional completo, consulte o exemplo de código set_custom_client_timeouts.rb no GitHub.

Limites e erros de tempo limite

Embora seja possível aumentar a duração do tempo limite do cliente, os limites do lado do servidor ainda se aplicam. As solicitações que levarem mais de duas horas poderão falhar e gerar uma exceção Google::Ads::GoogleAds::Errors::GoogleAdsError ou GRPC::DeadlineExceeded com um status DEADLINE_EXCEEDED.