Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "fmt"
- import "net/http"
- import "runtime"
- import "log"
- import "time"
- func retry(attempts int, sleep time.Duration, f func() error) (err error) {
- for i := 0; ; i++ {
- err = f()
- if err == nil {
- return
- }
- if i >= (attempts - 1) {
- break
- }
- time.Sleep(sleep)
- log.Println("retrying after error:", err)
- }
- return fmt.Errorf("after %d attempts, last error: %s", attempts, err)
- }
- func main() {
- host := "http://golang.org"
- req, err := http.Get(host)
- if err != nil {
- req, _ := http.Get(host)
- fmt.Println("ERRRRRRRRORRRR!!!!!!", req.Body)
- }
- runtime.GOMAXPROCS(1)
- for i := 0; i < 100; i++ {
- go func(host string) {
- retry(10, 1 * time.Minute, func() (err error) {
- req, err = http.Get(host)
- fmt.Println(req.Body)
- return
- })
- } ("http://golasng.org")
- }
- var s string
- fmt.Scanln(&s)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement