bottom_videos.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import datetime
  2. import traceback
  3. import os
  4. from utils import execute_sql_from_odps
  5. from db_helper import RedisHelper
  6. from config import set_config
  7. from log import Log
  8. config_ = set_config()
  9. log_ = Log()
  10. def update_bottom_videos():
  11. """更新兜底视频"""
  12. try:
  13. # 获取总播放量top1000的视频
  14. now_date = datetime.datetime.today()
  15. sql = "SELECT id " \
  16. ",play_count_total " \
  17. "FROM videoods.wx_video_test " \
  18. "WHERE transcode_status = 3 " \
  19. "AND STATUS = 1 " \
  20. "AND recommend_status IN ( - 6, 1) " \
  21. "ORDER BY play_count_total DESC " \
  22. "LIMIT 1000" \
  23. ";"
  24. records = execute_sql_from_odps(project='videoods', sql=sql)
  25. # 视频按照总播放量写入redis
  26. videos = {}
  27. with records.open_reader() as reader:
  28. for record in reader:
  29. video_id = record['id']
  30. videos[video_id] = record['play_count_total']
  31. # print(videos)
  32. redis_helper = RedisHelper()
  33. redis_helper.add_data_with_zset(key_name=config_.BOTTOM_KEY_NAME, data=videos)
  34. # 与原有兜底视频排序,保留top1000
  35. redis_helper.remove_by_rank_from_zset(key_name=config_.BOTTOM_KEY_NAME, start=config_.BOTTOM_NUM, stop=-1)
  36. # 移除bottom key的过期时间,将其转换为永久状态
  37. redis_helper.persist_key(key_name=config_.BOTTOM_KEY_NAME)
  38. log_.info('{} update bottom videos success! num = {}'.format(now_date, len(videos)))
  39. except Exception as e:
  40. log_.error(traceback.format_exc())
  41. if __name__ == '__main__':
  42. update_bottom_videos()
  43. # 将日志上传到oss
  44. # log_cmd = "ossutil cp -r -f {} oss://{}/{}".format(log_.logname, config_.BUCKET_NAME,
  45. # config_.OSS_FOLDER_LOGS + 'bottom_videos/')
  46. # os.system(log_cmd)