Advertisement
Guest User

Untitled

a guest
Jan 6th, 2018
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. package main
  2.  
  3. import "fmt"
  4. import "net/http"
  5. import "runtime"
  6. import "log"
  7. import "time"
  8. func retry(attempts int, sleep time.Duration, f func() error) (err error) {
  9. for i := 0; ; i++ {
  10. err = f()
  11. if err == nil {
  12. return
  13. }
  14.  
  15. if i >= (attempts - 1) {
  16. break
  17. }
  18.  
  19. time.Sleep(sleep)
  20.  
  21. log.Println("retrying after error:", err)
  22. }
  23. return fmt.Errorf("after %d attempts, last error: %s", attempts, err)
  24. }
  25.  
  26. func main() {
  27. host := "http://golang.org"
  28. req, err := http.Get(host)
  29. if err != nil {
  30. req, _ := http.Get(host)
  31. fmt.Println("ERRRRRRRRORRRR!!!!!!", req.Body)
  32. }
  33.  
  34. runtime.GOMAXPROCS(1)
  35. for i := 0; i < 100; i++ {
  36. go func(host string) {
  37. retry(10, 1 * time.Minute, func() (err error) {
  38. req, err = http.Get(host)
  39. fmt.Println(req.Body)
  40. return
  41. })
  42. } ("http://golasng.org")
  43. }
  44. var s string
  45. fmt.Scanln(&s)
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement