Browse Source

add relevant

liqian 3 years ago
parent
commit
1dfcff3903
3 changed files with 49 additions and 4 deletions
  1. 30 1
      app.py
  2. 15 0
      recommend.py
  3. 4 3
      utils.py

+ 30 - 1
app.py

@@ -7,7 +7,7 @@ import time
 from flask import Flask, request
 from flask import Flask, request
 from log import Log
 from log import Log
 from config import set_config
 from config import set_config
-from recommend import video_recommend
+from recommend import video_recommend, video_relevant_recommend
 from category import get_category_videos
 from category import get_category_videos
 from video_recall import PoolRecall
 from video_recall import PoolRecall
 from db_helper import RedisHelper
 from db_helper import RedisHelper
@@ -68,6 +68,35 @@ def homepage_recommend():
         return json.dumps(result)
         return json.dumps(result)
 
 
 
 
+# 相关推荐
+@app.route('/applet/video/relevant/recommend', methods=['GET', 'POST'])
+def relevant_recommend():
+    start_time = time.time()
+    try:
+        request_data = json.loads(request.get_data())
+        mid = request_data.get('mid')
+        uid = request_data.get('uid')
+        video_id = request_data.get('videoId')
+        up_uid = request_data.get('upUid')
+        share_mid = request_data.get('shareMid')
+        share_uid = request_data.get('shareUid')
+        page_num = request_data.get('pageNum', 1)
+        page_size = request_data.get('pageSize', 10)
+        app_type = request_data.get('appType')
+        log_.info('request data: {}'.format(request_data))
+
+        videos = video_relevant_recommend(mid=mid, uid=uid, size=page_size, app_type=app_type)
+
+        result = {'code': 200, 'message': 'success', 'data': {'videos': videos}}
+        log_.info('app_type: {}, mid: {}, uid: {}, relevant-result: {}, execute time = {}ms'.format(
+            app_type, mid, uid, result, (time.time() - start_time) * 1000))
+        return json.dumps(result)
+    except Exception as e:
+        log_.error(traceback.format_exc())
+        result = {'code': -1, 'message': 'fail'}
+        return json.dumps(result)
+
+
 # 管理后台实时修改rov
 # 管理后台实时修改rov
 @app.route('/applet/video/update/rov', methods=['GET', 'POST'])
 @app.route('/applet/video/update/rov', methods=['GET', 'POST'])
 def update_rov():
 def update_rov():

+ 15 - 0
recommend.py

@@ -82,6 +82,7 @@ def video_recommend(mid, uid, size, app_type, algo_type):
     preview_key_name = config_.PREVIEW_KEY_PREFIX + '{}.{}'.format(app_type, mid)
     preview_key_name = config_.PREVIEW_KEY_PREFIX + '{}.{}'.format(app_type, mid)
     preview_video_ids = [item['videoId'] for item in rank_result]
     preview_video_ids = [item['videoId'] for item in rank_result]
     if preview_video_ids:
     if preview_video_ids:
+        log_.error('key_name = {} \n values = {}'.format(preview_key_name, tuple(preview_video_ids)))
         redis_helper.add_data_with_set(key_name=preview_key_name, values=tuple(preview_video_ids), expire_time=30*60)
         redis_helper.add_data_with_set(key_name=preview_key_name, values=tuple(preview_video_ids), expire_time=30*60)
         log_.info('preview redis update success!')
         log_.info('preview redis update success!')
 
 
@@ -128,6 +129,20 @@ def update_local_distribute_count(videos):
         log_.error(traceback.format_exc())
         log_.error(traceback.format_exc())
 
 
 
 
+def video_relevant_recommend(mid, uid, size, app_type):
+    """
+    相关推荐逻辑
+    :param mid: mid type-string
+    :param uid: uid type-string
+    :param size: 请求视频数量 type-int
+    :param app_type: 产品标识  type-int
+    :param algo_type: 算法类型  type-string
+    :return: videos type-list
+    """
+    videos = video_recommend(mid=mid, uid=uid, size=size, app_type=app_type, algo_type='')
+    return videos
+
+
 if __name__ == '__main__':
 if __name__ == '__main__':
     videos = [{'videoId': '12345', 'flowPool': '133#442#2', 'distributeCount': 10}]
     videos = [{'videoId': '12345', 'flowPool': '133#442#2', 'distributeCount': 10}]
     update_local_distribute_count(videos)
     update_local_distribute_count(videos)

+ 4 - 3
utils.py

@@ -39,14 +39,15 @@ def request_post(request_url, request_data, timeout):
     :return: res_data json格式
     :return: res_data json格式
     """
     """
     try:
     try:
-        response = requests.post(url=request_url, json=request_data, timeout=timeout)
+        headers = {"Connection": "close"}
+        response = requests.post(url=request_url, json=request_data, timeout=timeout, headers=headers)
         if response.status_code == 200:
         if response.status_code == 200:
             res_data = json.loads(response.text)
             res_data = json.loads(response.text)
             return res_data
             return res_data
         else:
         else:
             return None
             return None
-    except requests.exceptions.Timeout as e:
-        log_.error('url: {} timeout, exception: {}, traceback: {}'.format(request_url, e, traceback.format_exc()))
+    except Exception as e:
+        log_.error('url: {}, exception: {}, traceback: {}'.format(request_url, e, traceback.format_exc()))
         return None
         return None