baichongyang 3 jaren geleden
bovenliggende
commit
ce0be10f83
5 gewijzigde bestanden met toevoegingen van 24 en 8 verwijderingen
  1. 1 1
      app.py
  2. 2 2
      config.py
  3. 7 2
      db_helper.py
  4. 1 0
      recommend.py
  5. 13 3
      video_recall.py

+ 1 - 1
app.py

@@ -145,7 +145,7 @@ def apprun(MULTI_PROCESS=True, ip='0.0.0.0', port=5001):
             mulserver._stop_event.wait()
  
         #for i in range(cpu_count()):
-        for i in range(4):
+        for i in range(3):
             p = Process(target=server_forever)
             p.start()
 

+ 2 - 2
config.py

@@ -159,7 +159,7 @@ class ProductionConfig(BaseConfig):
 
 
 def set_config():
-    # return DevelopmentConfig()
+    return DevelopmentConfig()
     # return TestConfig()
     # return PreProductionConfig()
-    return ProductionConfig()
+    #return ProductionConfig()

+ 7 - 2
db_helper.py

@@ -1,5 +1,6 @@
 import redis
 import psycopg2
+from psycopg2 import pool as pgpool
 from config import set_config
 from log import Log
 
@@ -230,20 +231,24 @@ class RedisHelper(object):
 #hologres_info = config_.HOLOGRES_INFO
 #conn = psycopg2.connect(**hologres_info)
 #cur = conn.cursor()
+connectPool = pgpool.SimpleConnectionPool(1, 10, **config_.HOLOGRES_INFO)
 class HologresHelper(object):
     def __init__(self):
         """初始化hologres连接信息"""
-        self.hologres_info = config_.HOLOGRES_INFO
+        #self.hologres_info = config_.HOLOGRES_INFO
 
     def get_data(self, sql):
         #global conn
         # 连接Hologres
-        conn = psycopg2.connect(**self.hologres_info)
+        #conn = psycopg2.connect(**self.hologres_info)
+        conn = connectPool.getconn()
         # 创建游标
         cur = conn.cursor()
         # 查询数据
         cur.execute(sql)
         data = cur.fetchall()
+        cur.close()
+        connectPool.putconn(conn, close=False)
         # 提交事务
         #conn.commit()
         # 释放资源

+ 1 - 0
recommend.py

@@ -47,6 +47,7 @@ def video_recommend(mid, uid, size, app_type, algo_type):
     pool_recall = PoolRecall(app_type=app_type, mid=mid, uid=uid, ab_code=ab_code)
     _, last_rov_recall_key, _ = pool_recall.get_video_last_idx()
     t = [gevent.spawn(pool_recall.rov_pool_recall, size), gevent.spawn(pool_recall.flow_pool_recall, size) ]
+    gevent.joinall(t)
     recall_result_list = [i.get() for i in t]
 
     end_recall = time.time()

+ 13 - 3
video_recall.py

@@ -5,6 +5,7 @@ from log import Log
 from db_helper import RedisHelper
 from config import set_config
 from utils import FilterVideos, get_videos_remain_view_count, get_videos_local_distribute_count
+import gevent
 
 log_ = Log()
 config_ = set_config()
@@ -63,7 +64,10 @@ class PoolRecall(object):
             # 过滤
             debug_tm_b = time.time()
             filter_ = FilterVideos(app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
-            filtered_result = filter_.filter_videos()
+            ge = gevent.spawn(filter_.filter_videos)
+            ge.join()
+            filtered_result = ge.get()
+            #filtered_result = filter_.filter_videos()
             debug_tm_e = time.time()
             if filtered_result:
                 # 添加视频源参数 pushFrom, abCode
@@ -119,11 +123,17 @@ class PoolRecall(object):
             # 过滤
             debug_tm_fb = time.time()
             filter_ = FilterVideos(app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
-            filtered_result = filter_.filter_videos()
+            ge = gevent.spawn(filter_.filter_videos)
+            ge.join()
+            filtered_result = ge.get()
+            #filtered_result = filter_.filter_videos()
             # 检查可分发数
             if filtered_result:
                 st_check = time.time()
-                check_result = self.check_video_counts(video_ids=filtered_result, flow_pool_mapping=video_mapping)
+                ge = gevent.spawn(self.check_video_counts, video_ids=filtered_result, flow_pool_mapping=video_mapping)
+                ge.join()
+                check_result = ge.get()
+                #check_result = self.check_video_counts(video_ids=filtered_result, flow_pool_mapping=video_mapping)
                 for item in check_result:
                     if item[0] not in flow_pool_recall_videos:
                         # 取其中一个 flow_pool 作为召回结果