Add retry
This commit is contained in:
25
main.go
25
main.go
@@ -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
|
||||
|
Reference in New Issue
Block a user