package main
import (
"fmt"
"net/http"
"time"
"context"
)
const maxRetries = 3
const retryDelay = 2 * time.Second
func makeRequest(ctx context.Context, url string) error {
var err error
for i := 0; i < maxRetries; i++ {
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)
resp, err := http.DefaultClient.Do(req)
if err == nil && resp.StatusCode == http.StatusOK {
return nil
}
if resp != nil && resp.StatusCode == http.StatusTooManyRequests {
fmt.Println("Rate limit hit, retrying...")
time.Sleep(retryDelay)
} else {
break
}
}
return err
}
func main() {
ctx := context.Background()
url := "https://api.example.com/resource"
if err := makeRequest(ctx, url); err != nil {
fmt.Printf("Failed to retrieve resource: %v\n", err)
} else {
fmt.Println("Resource retrieved successfully!")
}
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?