Browse Source

add request timeout

liqian 3 years ago
parent
commit
53b8bb471a
1 changed files with 20 additions and 7 deletions
  1. 20 7
      utils.py

+ 20 - 7
utils.py

@@ -10,17 +10,24 @@ config_ = set_config()
 log_ = Log()
 
 
-def request_post(request_url, request_data):
+def request_post(request_url, request_data, timeout=1.0):
     """
     post 请求 HTTP接口
     :param request_url: 接口URL
     :param request_data: 请求参数
+    :param timeout: 超时时间,默认为1秒,type-float
     :return: res_data json格式
     """
-    response = requests.post(url=request_url, json=request_data)
-    if response.status_code == 200:
-        res_data = json.loads(response.text)
-        return res_data
+    try:
+        response = requests.post(url=request_url, json=request_data, timeout=timeout)
+        if response.status_code == 200:
+            res_data = json.loads(response.text)
+            return res_data
+        else:
+            return None
+    except requests.exceptions.Timeout as e:
+        log_.error('url: {} timeout, exception: {}'.format(request_url, e))
+        return None
 
 
 def get_videos_remain_view_count(app_type, videos):
@@ -34,7 +41,7 @@ def get_videos_remain_view_count(app_type, videos):
         return []
 
     request_data = {'appType': app_type, 'videos': videos}
-    result = request_post(request_url=config_.GET_REMAIN_VIEW_COUNT_URL, request_data=request_data)
+    result = request_post(request_url=config_.GET_REMAIN_VIEW_COUNT_URL, request_data=request_data, timeout=1)
 
     if result is None:
         return []
@@ -157,10 +164,16 @@ class FilterVideos(object):
                         "uid": self.uid,
                         "types": list(types),
                         "videoIds": video_ids}
-        result = request_post(request_url=config_.VIDEO_FILTER_URL, request_data=request_data)
+        result = request_post(request_url=config_.VIDEO_FILTER_URL, request_data=request_data, timeout=2.5)
+
+        if result is None:
+            log_.info('过滤失败,types: {}'.format(types))
+            return video_ids
+
         if result['code'] != 0:
             log_.info('过滤失败,types: {}'.format(types))
             return video_ids
+
         filtered_videos = result['data']
         return filtered_videos