recycleactor commited on
Commit
89d85a5
·
verified ·
1 Parent(s): e184d30

Upload main.rs

Browse files
Files changed (1) hide show
  1. src/main.rs +8 -8
src/main.rs CHANGED
@@ -1073,14 +1073,14 @@ async fn send_audio(
1073
  let filename = format!("track_{}.{}", q.id, ext);
1074
 
1075
  // Загружаем в Telegram через отдельный клиент.
1076
- // Для api.telegram.org в некоторых средах HF прямое соединение с no_proxy()
1077
- // падает на TLS handshake, поэтому здесь даем reqwest использовать env proxy
1078
- // и принудительно уходим на HTTP/1.1 с короткими ретраями.
1079
  let tg_url = format!("https://api.telegram.org/bot{}/sendAudio", bot_token);
1080
  let tg_http = reqwest::Client::builder()
1081
  .https_only(true)
1082
- .connect_timeout(Duration::from_secs(20))
1083
- .timeout(Duration::from_secs(180))
 
1084
  .tcp_keepalive(Duration::from_secs(30))
1085
  .build()
1086
  .unwrap();
@@ -1088,7 +1088,7 @@ async fn send_audio(
1088
  let mut tg_json: Option<serde_json::Value> = None;
1089
  let mut last_tg_err: Option<String> = None;
1090
 
1091
- for attempt in 1..=3u8 {
1092
  let part = reqwest::multipart::Part::bytes(dec.clone())
1093
  .file_name(filename.clone())
1094
  .mime_str(mime)
@@ -1129,8 +1129,8 @@ async fn send_audio(
1129
  }
1130
  }
1131
 
1132
- if attempt < 3 {
1133
- tokio::time::sleep(Duration::from_secs((attempt as u64) * 2)).await;
1134
  }
1135
  }
1136
 
 
1073
  let filename = format!("track_{}.{}", q.id, ext);
1074
 
1075
  // Загружаем в Telegram через отдельный клиент.
1076
+ // Если аплоад виснет по сети, важно быстро вернуть ошибку боту,
1077
+ // чтобы он раньше переключился на fallback по URL.
 
1078
  let tg_url = format!("https://api.telegram.org/bot{}/sendAudio", bot_token);
1079
  let tg_http = reqwest::Client::builder()
1080
  .https_only(true)
1081
+ .http1_only()
1082
+ .connect_timeout(Duration::from_secs(8))
1083
+ .timeout(Duration::from_secs(18))
1084
  .tcp_keepalive(Duration::from_secs(30))
1085
  .build()
1086
  .unwrap();
 
1088
  let mut tg_json: Option<serde_json::Value> = None;
1089
  let mut last_tg_err: Option<String> = None;
1090
 
1091
+ for attempt in 1..=2u8 {
1092
  let part = reqwest::multipart::Part::bytes(dec.clone())
1093
  .file_name(filename.clone())
1094
  .mime_str(mime)
 
1129
  }
1130
  }
1131
 
1132
+ if attempt < 2 {
1133
+ tokio::time::sleep(Duration::from_secs(1)).await;
1134
  }
1135
  }
1136