

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurando tempos limite no AWS SDK para Rust
<a name="timeouts"></a>

O AWS SDK para Rust fornece várias configurações para gerenciar tempos limite de AWS service (Serviço da AWS) solicitação e fluxos de dados paralisados. Isso ajuda sua aplicação a se comportar de maneira ideal quando ocorrem atrasos e falhas inesperadas na rede.

## Tempos limite da API
<a name="api-timeouts"></a>

Quando há problemas transitórios que podem fazer com que as tentativas de solicitação demorem muito ou falhem completamente, é importante revisar e definir tempos limite a aplicação poder antecipar-se à falha rapidamente e se comportar de maneira ideal. Solicitações que falham podem ser automaticamente repetidas pelo SDK. Uma prática recomendada é definir tempos limite para as tentativas individuais e para toda a solicitação. 

O SDK para Rust fornece um tempo limite padrão para estabelecer uma conexão para uma solicitação. O SDK não tem nenhum tempo de espera máximo padrão definido para receber uma resposta para uma tentativa de solicitação ou para toda a solicitação. As seguintes opções de tempo limite estão disponíveis:


| Parâmetro | Valor padrão  | Description | 
| --- | --- | --- | 
| Tempo limite de conexão | 3,1 segundos | O tempo máximo de espera para estabelecer uma conexão antes de desistir. | 
| Tempo limite de operação | Nenhum | O tempo máximo de espera antes de receber uma resposta do SDK para Rust, incluindo todas as novas tentativas. | 
| Tempo limite de tentativa de operação | Nenhum | O tempo máximo de espera para uma única tentativa de HTTP, após o qual a chamada de API pode ser repetida. | 
| Tempo limite de leitura | Nenhum | O tempo máximo de espera para ler o primeiro byte de uma resposta a partir do momento em que a solicitação é iniciada. | 

O seguinte exemplo exibe a configuração de um cliente do Amazon S3 com valores de tempo limite personalizados:

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .timeout_config(
        TimeoutConfig::builder()
            .operation_timeout(Duration::from_secs(5))
            .operation_attempt_timeout(Duration::from_millis(1500))
            .build()
    )
    .load()
    .await;

let s3 = aws_sdk_s3::Client::new(&config);
```

Ao usar os tempos limite de operação e tentativa juntos, você define um limite rígido para o tempo total gasto em todas as novas tentativas. Você também configura uma solicitação HTTP individual para se antecipar à falha rapidamente em uma solicitação lenta.

Como alternativa para definir esses valores de tempo limite no cliente de serviço para todas as operações, você pode configurar ou [substituí-las por uma única solicitação](peroperation.md).

**Importante**  
Os tempos limite de operação e tentativa não se aplicam aos dados de streaming consumidos após o SDK para Rust ter retornado uma resposta. Por exemplo, o consumo de dados de um membro do `ByteStream` de uma resposta não está sujeito aos tempos limite de operação.

## Proteção de fluxo paralisado
<a name="stalled-stream-protection"></a>

O SDK para Rust fornece outra forma de tempo limite relacionada à detecção de fluxos paralisados. Um fluxo paralisado é um fluxo de upload ou download que não produz dados por mais do que um período de carência configurado. Isso ajuda a evitar que as aplicações sejam interrompidas indefinidamente e nunca progridam.

 A proteção de fluxo paralisado retornará um erro quando um fluxo ficar inativo por mais tempo do que o período aceitável. 

Por padrão, o SDK para Rust permite a proteção de streams paralisados para uploads e downloads e procura pelo menos 1% byte/sec da atividade com um generoso período de carência de 20 segundos.

O seguinte exemplo exibe um `StalledStreamProtectionConfig` personalizado que desabilita a proteção de upload e altera o período de carência para nenhuma atividade para 10 segundos:

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .stalled_stream_protection(
        StalledStreamProtectionConfig::enabled()
            .upload_enabled(false)
            .grace_period(Duration::from_secs(10))
            .build()
    )
    .load()
    .await;
```

**Atenção**  
A proteção de fluxo paralisado é uma opção de configuração avançada. Recomendamos alterar esses valores somente se a aplicação precisar de um desempenho melhor ou se estiver causando algum outro problema. 

### Desabilitar a proteção de fluxo paralisado
<a name="disable-stalled-stream-protection"></a>

O seguinte exemplo mostra como desabilitar completamente a proteção de fluxo parado:

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .stalled_stream_protection(StalledStreamProtectionConfig::disabled())
    .load()
    .await;
```