Guest User

Untitled

a guest
Jun 20th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. def failwhale_wrap(self, fn, *args, **kwargs):
  2. '''
  3. Catch the fail whale, and harpoon it! aka. Catch HTTP error 401 or 500,
  4. and retry 3 times, with a small delay in between before giving up and
  5. raising the last exception.
  6.  
  7. @param[in] fn Function to call.
  8. @param[in] args Positional arguments.
  9. @param[in] kwargs Keyword arguments.
  10. @returns Function return code.
  11. '''
  12.  
  13. for i in range(3):
  14. try:
  15. return fn(*args, **kwargs)
  16. except urllib2.HTTPError, e:
  17. if e.code not in (401, 500):
  18. break
  19.  
  20. # Wait 100ms before trying again. Lame.
  21. time.sleep(0.1)
  22.  
  23. raise e
Add Comment
Please, Sign In to add comment