Add retry

This commit is contained in:
2025-05-29 17:49:07 +03:00
parent 6eb10394c1
commit 01c84b6f4d

25
main.go
View File

@@ -88,6 +88,31 @@ func fileExtension(url string) string {
// Скачиваем и сохраняем изображение
func downloadImage(url, filename string) error {
const maxRetries = 3
const retryDelay = 1 * time.Second
var lastErr error
for attempt := 1; attempt <= maxRetries; attempt++ {
// Попытка скачать изображение
err := attemptDownload(url, filename)
if err == nil {
// Успешно скачали
return nil
}
lastErr = err
if attempt < maxRetries {
fmt.Printf("Attempt %d failed for %s: %v. Retrying in %v...\n",
attempt, url, err, retryDelay)
time.Sleep(retryDelay)
}
}
return fmt.Errorf("all %d download attempts failed: %v", maxRetries, lastErr)
}
// Одна попытка скачивания
func attemptDownload(url, filename string) error {
resp, err := http.Get(url)
if err != nil {
return err