1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import datetime
- import traceback
- import os
- from utils import execute_sql_from_odps
- from db_helper import RedisHelper
- from config import set_config
- from log import Log
- config_ = set_config()
- log_ = Log()
- def update_bottom_videos():
- """更新兜底视频"""
- try:
- # 获取总播放量top1000的视频
- now_date = datetime.datetime.today()
- sql = "SELECT id " \
- ",play_count_total " \
- "FROM videoods.wx_video_test " \
- "WHERE transcode_status = 3 " \
- "AND STATUS = 1 " \
- "AND recommend_status IN ( - 6, 1) " \
- "ORDER BY play_count_total DESC " \
- "LIMIT 1000" \
- ";"
- records = execute_sql_from_odps(project='videoods', sql=sql)
- # 视频按照总播放量写入redis
- videos = {}
- with records.open_reader() as reader:
- for record in reader:
- video_id = record['id']
- videos[video_id] = record['play_count_total']
- # print(videos)
- redis_helper = RedisHelper()
- redis_helper.add_data_with_zset(key_name=config_.BOTTOM_KEY_NAME, data=videos)
- # 与原有兜底视频排序,保留top1000
- redis_helper.remove_by_rank_from_zset(key_name=config_.BOTTOM_KEY_NAME, start=config_.BOTTOM_NUM, stop=-1)
- # 移除bottom key的过期时间,将其转换为永久状态
- redis_helper.persist_key(key_name=config_.BOTTOM_KEY_NAME)
- log_.info('{} update bottom videos success! num = {}'.format(now_date, len(videos)))
- except Exception as e:
- log_.error(traceback.format_exc())
- if __name__ == '__main__':
- update_bottom_videos()
- # 将日志上传到oss
- # log_cmd = "ossutil cp -r -f {} oss://{}/{}".format(log_.logname, config_.BUCKET_NAME,
- # config_.OSS_FOLDER_LOGS + 'bottom_videos/')
- # os.system(log_cmd)
|