liqian 3 years ago
parent
commit
9a0f1d1a0c
2 changed files with 23 additions and 12 deletions
  1. 18 6
      recommend.py
  2. 5 6
      video_rank.py

+ 18 - 6
recommend.py

@@ -6,7 +6,7 @@ from datetime import datetime
 from log import Log
 from config import set_config
 from video_recall import PoolRecall
-from video_rank import video_rank, bottom_strategy
+from video_rank import video_rank, bottom_strategy, video_rank_by_w_h_rate
 from db_helper import RedisHelper
 import gevent
 
@@ -76,6 +76,14 @@ def video_recommend(mid, uid, size, app_type, algo_type, client_info):
         log_.info('mid: {}, uid: {}, bottom strategy result: {}, execute time = {}ms'.format(
             mid, uid, rank_result, (end_bottom - start_bottom) * 1000))
 
+    # ####### 视频宽高比AB实验
+    # 对内容精选进行 视频宽高比分发实验
+    if app_type == config_.APP_TYPE['LONG_VIDEO']:
+        videos = rank_result
+        rank_result = video_rank_by_w_h_rate(videos=videos)
+        log_.info('app_type: {}, mid: {}, uid: {}, rank_result: {}, execute time = {}ms'.format(
+            app_type, mid, uid, rank_result, (end_rank - start_rank) * 1000))
+
     # ####### redis数据刷新
     # log_.info('====== update redis')
     # 预曝光数据同步刷新到Redis, 过期时间为0.5h
@@ -88,14 +96,18 @@ def video_recommend(mid, uid, size, app_type, algo_type, client_info):
         log_.info('preview redis update success!')
 
     # 将此次获取的ROV召回池config_.K末位视频id同步刷新到Redis中,方便下次快速定位到召回位置,过期时间为1天
-    rov_recall_video = [item['videoId'] for item in rank_result[:3]
+    rov_recall_video = [item['videoId'] for item in rank_result[:config_.K]
                         if item['pushFrom'] == config_.PUSH_FROM['rov_recall']]
-    if 0 < len(rov_recall_video) <= config_.K:
+    if len(rov_recall_video) > 0:
         if not redis_helper.get_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME, value=rov_recall_video[-1]):
             redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[-1])
-    elif len(rov_recall_video) > config_.K:
-        if not redis_helper.get_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME, value=rov_recall_video[config_.K - 1]):
-            redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[config_.K - 1])
+
+    # if 0 < len(rov_recall_video) <= config_.K:
+    #     if not redis_helper.get_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME, value=rov_recall_video[-1]):
+    #         redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[-1])
+    # elif len(rov_recall_video) > config_.K:
+    #     if not redis_helper.get_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME, value=rov_recall_video[config_.K - 1]):
+    #         redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[config_.K - 1])
     log_.info('last video redis update success!')
 
     # 将此次分发的流量池视频,对 本地分发数-1 进行记录

+ 5 - 6
video_rank.py

@@ -151,10 +151,9 @@ def video_rank_by_w_h_rate(videos):
     :param videos:
     :return:
     """
-    new_rank_result = []
     redis_helper = RedisHelper()
-    """
-    # 判断前两个视频是否是置顶视频 或者 流量池视频
+
+    # ##### 判断前两个视频是否是置顶视频 或者 流量池视频
     top_2_push_from_flag = [False, False]
     for i, video in enumerate(videos[:2]):
         if video['pushFrom'] in [config_.PUSH_FROM['top'], config_.PUSH_FROM['flow_recall']]:
@@ -162,7 +161,7 @@ def video_rank_by_w_h_rate(videos):
     if top_2_push_from_flag[0] and top_2_push_from_flag[1]:
         return videos
 
-    # 判断前两个视频是否为横屏
+    # ##### 判断前两个视频是否为横屏
     top_2_w_h_rate_flag = [False, False]
     for i, video in enumerate(videos[:2]):
         if video['pushFrom'] in [config_.PUSH_FROM['top'], config_.PUSH_FROM['flow_recall']]:
@@ -182,8 +181,8 @@ def video_rank_by_w_h_rate(videos):
                 top_2_w_h_rate_flag[i] = True
     if top_2_w_h_rate_flag[0] and top_2_w_h_rate_flag[1]:
         return videos
-    """
-    # 前两个视频中有不符合前面两者条件的,对视频进行位置调整
+
+    # ##### 前两个视频中有不符合前面两者条件的,对视频进行位置调整
     # 记录横屏视频位置
     horizontal_video_index = []
     # 记录流量池视频位置