Cada serviço na biblioteca de cliente do Ruby vem com uma política padrão de tempo limite e nova tentativa
especificada 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 modificar 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 ver um script de trabalho completo, consulte o
exemplo de código set_custom_client_timeouts.rb no
GitHub.
Limites de tempo limite e erros
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 levam mais de duas horas podem falhar e gerar uma exceção Google::Ads::GoogleAds::Errors::GoogleAdsError ou GRPC::DeadlineExceeded com um status DEADLINE_EXCEEDED.