utils.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import requests
  2. import json
  3. import traceback
  4. from odps import ODPS
  5. from log import Log
  6. from config import set_config
  7. log_ = Log()
  8. config_, env = set_config()
  9. def request_post(request_url, headers, request_data):
  10. """
  11. post 请求 HTTP接口
  12. :param request_url: 接口URL
  13. :param headers: 请求头
  14. :param request_data: 请求参数
  15. :return: res_data json格式
  16. """
  17. try:
  18. response = requests.post(url=request_url, json=request_data, headers=headers)
  19. if response.status_code == 200:
  20. res_data = json.loads(response.text)
  21. return res_data
  22. else:
  23. return None
  24. except Exception as e:
  25. log_.error('url: {}, exception: {}, traceback: {}'.format(request_url, e, traceback.format_exc()))
  26. return None
  27. def request_get(request_url, headers, params=None):
  28. """
  29. get 请求 HTTP接口
  30. :param request_url: 接口URL
  31. :param headers: 请求头
  32. :param params: 请求参数
  33. :return: res_data json格式
  34. """
  35. try:
  36. response = requests.get(url=request_url, headers=headers, params=params)
  37. if response.status_code == 200:
  38. res_data = json.loads(response.text)
  39. return res_data
  40. else:
  41. return None
  42. except Exception as e:
  43. log_.error('url: {}, exception: {}, traceback: {}'.format(request_url, e, traceback.format_exc()))
  44. return None
  45. def get_data_from_odps(date, project, table, connect_timeout=3000, read_timeout=500000,
  46. pool_maxsize=1000, pool_connections=1000):
  47. """
  48. 从odps获取数据
  49. :param date: 日期 type-string '%Y%m%d'
  50. :param project: type-string
  51. :param table: 表名 type-string
  52. :param connect_timeout: 连接超时设置
  53. :param read_timeout: 读取超时设置
  54. :param pool_maxsize:
  55. :param pool_connections:
  56. :return: records
  57. """
  58. odps = ODPS(
  59. access_id=config_.ODPS_CONFIG['ACCESSID'],
  60. secret_access_key=config_.ODPS_CONFIG['ACCESSKEY'],
  61. project=project,
  62. endpoint=config_.ODPS_CONFIG['ENDPOINT'],
  63. connect_timeout=connect_timeout,
  64. read_timeout=read_timeout,
  65. pool_maxsize=pool_maxsize,
  66. pool_connections=pool_connections
  67. )
  68. records = odps.read_table(name=table, partition='dt=%s' % date)
  69. return records