Guest User

Untitled

a guest
Feb 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. import requests
  2. import logging
  3.  
  4. METHOD_GET = 'GET'
  5. METHOD_POST = 'POST'
  6.  
  7. RETURN_TEXT = 'TEXT'
  8. RETURN_BINARY = 'BINARY'
  9. RETURN_JSON = 'JSON'
  10. RETURN_RAW = 'RAW'
  11.  
  12. logging = logging.getLogger(__name__)
  13.  
  14.  
  15. def before_logging(func):
  16. def wrapper(*args, **kwargs):
  17. func_name = func.__name__
  18. separator_idx = func_name.find('_')
  19. func_type = func_name[separator_idx + 1:]
  20. logging.info('request[%s]: %s ....' % (func_type, args[0]))
  21. return func(*args, **kwargs)
  22.  
  23. return wrapper
  24.  
  25.  
  26. @before_logging
  27. def request_get(url, data, retry_times=3, timeout=0.5):
  28. for i in range(retry_times):
  29. try:
  30. result = requests.get(url, timeout=timeout, params=data)
  31. except Exception as e:
  32. logging.warning('request[get]: %s - failure, retry times %s ' % (url, i + 1))
  33. continue
  34. return result
  35.  
  36.  
  37. @before_logging
  38. def request_post(url, data, retry_times=3, timeout=0.5):
  39. for i in range(retry_times):
  40. try:
  41. result = requests.post(url, timeout=timeout, data=data)
  42. except Exception as e:
  43. logging.warning('request[post]: %s - failure, retry times %s ' % (url, i + 1))
  44. continue
  45. return result
  46.  
  47.  
  48. def request(url, data=None, method_type=METHOD_GET, retry_times=3, timeout=0.5, return_type=RETURN_TEXT):
  49. result = None
  50. if method_type == METHOD_GET:
  51. result = request_get(url, data, retry_times, timeout)
  52. if method_type == METHOD_POST:
  53. result = request_post(url, data, retry_times, timeout)
  54.  
  55. if not result or result == None: return result
  56. if return_type == RETURN_TEXT:
  57. return result.text
  58. if return_type == RETURN_JSON:
  59. try:
  60. return result.json()
  61. except Exception as e:
  62. logging.warning('request[%s]: parse json failure %s ' % (method_type.lower(), str(e)))
  63. if return_type == RETURN_BINARY:
  64. return result.content
  65. if return_type == RETURN_RAW:
  66. return result.raw
Add Comment
Please, Sign In to add comment