1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #!/usr/bin/python
- # coding:utf-8
- 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()
- delta_date = now_date - datetime.timedelta(days=1)
- sql = "SELECT video_playcount.videoid, video_playcount.play_count " \
- "FROM (" \
- "SELECT videoid, COUNT(*) play_count " \
- "FROM loghubods.video_action_log_applet " \
- "WHERE dt = {} " \
- "AND business = 'videoPlay' " \
- "GROUP BY videoid" \
- ") video_playcount INNER " \
- "JOIN ( " \
- "SELECT id " \
- "FROM videoods.wx_video " \
- "WHERE transcode_status = 3 " \
- "AND STATUS = 1 " \
- "AND recommend_status IN ( - 6, 1)" \
- ") video_status " \
- "ON video_playcount.videoid = video_status.id " \
- "ORDER BY video_playcount.play_count DESC " \
- "LIMIT 1000;".format(delta_date.strftime('%Y%m%d'))
- records = execute_sql_from_odps(project='loghubods', sql=sql)
- # 视频按照昨日播放量写入redis
- videos = {}
- with records.open_reader() as reader:
- for record in reader:
- video_id = record['videoid']
- videos[video_id] = record['play_count']
- redis_helper = RedisHelper()
- redis_helper.add_data_with_zset(key_name=config_.BOTTOM_KEY_NAME, data=videos)
- # 移除bottom key的过期时间,将其转换为永久状态
- redis_helper.persist_key(key_name=config_.BOTTOM_KEY_NAME)
- log_.info('{} update bottom videos success!, video nums = {}'.format(now_date, len(videos)))
- except Exception as e:
- log_.error(traceback.format_exc())
- if __name__ == '__main__':
- update_bottom_videos()
|