alg_recsys_recall_undertake.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # -*- coding: utf-8 -*-
  2. import traceback
  3. from my_config import set_config
  4. from log import Log
  5. from my_utils import execute_sql_from_odps
  6. from db_helper import RedisHelper
  7. from datetime import datetime, timedelta
  8. from alg_recsys_recall_4h_region_trend import records_process_for_list
  9. config_, _ = set_config()
  10. log_ = Log()
  11. redis_helper = RedisHelper()
  12. def main():
  13. log_.info("开始执行:" + datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  14. #1 读取当前时间及上一时间
  15. now_date = datetime.today() # - timedelta(hours=1)
  16. hour = datetime.strftime(now_date, '%H').lstrip('0')
  17. date = datetime.strftime(now_date, '%Y%m%d')
  18. if hour == "":
  19. hour = "0"
  20. previous_date = now_date + timedelta(hours=1)
  21. hour_next = datetime.strftime(previous_date, '%H').lstrip('0')
  22. date_next = datetime.strftime(previous_date, '%Y%m%d')
  23. if hour_next == "":
  24. hour_next = "0"
  25. #2 循环拼接key,读一个写一个。
  26. REGION_CODE = {
  27. '北京': '110000', '天津': '120000', '河北省': '130000', '山西省': '140000', '内蒙古': '150000',
  28. '辽宁省': '210000', '吉林省': '220000', '黑龙江省': '230000',
  29. '上海': '310000', '江苏省': '320000', '浙江省': '330000', '安徽省': '340000', '福建省': '350000',
  30. '江西省': '360000',
  31. '山东省': '370000',
  32. '河南省': '410000', '湖北省': '420000', '湖南省': '430000', '广东省': '440000', '广西': '450000',
  33. '海南省': '460000',
  34. '重庆': '500000', '四川省': '510000', '贵州省': '520000', '云南省': '530000', '西藏': '540000',
  35. '陕西省': '610000', '甘肃省': '620000', '青海省': '630000', '宁夏': '640000', '新疆': '650000',
  36. '台湾省': '710000', '香港': '810000', '澳门': '820000',
  37. '广州': '440100', '深圳': '440300', '成都': '510100', '长沙': '430100',
  38. }
  39. keys = []
  40. for _, code in REGION_CODE.items():
  41. read_key = "recall:item:score:region:h:{}:data66:rule66:{}:{}".format(code, date, hour)
  42. keys.append(read_key)
  43. values = redis_helper.get_data_zset_with_index(read_key, 0, -1, True, True)
  44. print(str(read_key))
  45. print(str(values))
  46. if values and len(values) > 0:
  47. new_kvs = {}
  48. for k, v in values:
  49. new_kvs[k] = v
  50. write_key = "recall:item:score:region:h:{}:data66:rule66:{}:{}".format(code, date_next, hour_next)
  51. redis_helper.add_data_with_zset(write_key, new_kvs, expire_time = 1*24*3600)
  52. print(str(write_key))
  53. # records_process_for_list(result, process_and_store, max_size=50, num_workers=8)
  54. log_.info("完成执行:" + datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  55. if __name__ == '__main__':
  56. main()
  57. # cd /root/zhangbo/rov-offline
  58. # python alg_recsys_recall_undertake.py