|  | 
 |  | 
 | 
												
													
														| 25 |  from searx import settings
 | 25 |  from searx import settings
 | 
												
													
														| 26 |  import ConfigParser
 | 26 |  import ConfigParser
 | 
												
													
														| 27 |  import sys
 | 27 |  import sys
 | 
												
													
														|  | 
 | 28 | +from datetime import datetime
 | 
												
													
														| 28 |  
 | 29 |  
 | 
												
													
														| 29 |  engine_dir = dirname(realpath(__file__))
 | 30 |  engine_dir = dirname(realpath(__file__))
 | 
												
													
														| 30 |  searx_dir  = join(engine_dir, '../../')
 | 31 |  searx_dir  = join(engine_dir, '../../')
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 67 |              print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr)
 | 68 |              print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr)
 | 
												
													
														| 68 |              sys.exit(1)
 | 69 |              sys.exit(1)
 | 
												
													
														| 69 |      engines[engine.name] = engine
 | 70 |      engines[engine.name] = engine
 | 
												
													
														| 70 | -    engine.stats = {'result_count': 0, 'search_count': 0}
 |  | 
 | 
												
													
														|  | 
 | 71 | +    engine.stats = {'result_count': 0, 'search_count': 0, 'page_load_time': 0}
 | 
												
													
														| 71 |      if hasattr(engine, 'categories'):
 | 72 |      if hasattr(engine, 'categories'):
 | 
												
													
														| 72 |          for category_name in engine.categories:
 | 73 |          for category_name in engine.categories:
 | 
												
													
														| 73 |              categories.setdefault(category_name, []).append(engine)
 | 74 |              categories.setdefault(category_name, []).append(engine)
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 81 |      def process_callback(response, **kwargs):
 | 82 |      def process_callback(response, **kwargs):
 | 
												
													
														| 82 |          cb_res = []
 | 83 |          cb_res = []
 | 
												
													
														| 83 |          response.search_params = params
 | 84 |          response.search_params = params
 | 
												
													
														|  | 
 | 85 | +        engines[engine_name].stats['page_load_time'] += (datetime.now() - params['started']).total_seconds()
 | 
												
													
														| 84 |          for result in callback(response):
 | 86 |          for result in callback(response):
 | 
												
													
														| 85 |              result['engine'] = engine_name
 | 87 |              result['engine'] = engine_name
 | 
												
													
														| 86 |              cb_res.append(result)
 | 88 |              cb_res.append(result)
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 104 |          request_params = default_request_params()
 | 106 |          request_params = default_request_params()
 | 
												
													
														| 105 |          request_params['headers']['User-Agent'] = user_agent
 | 107 |          request_params['headers']['User-Agent'] = user_agent
 | 
												
													
														| 106 |          request_params['category'] = selected_engine['category']
 | 108 |          request_params['category'] = selected_engine['category']
 | 
												
													
														|  | 
 | 109 | +        request_params['started'] = datetime.now()
 | 
												
													
														| 107 |          request_params = engine.request(query, request_params)
 | 110 |          request_params = engine.request(query, request_params)
 | 
												
													
														| 108 |          callback = make_callback(selected_engine['name'], results, engine.response, request_params)
 | 111 |          callback = make_callback(selected_engine['name'], results, engine.response, request_params)
 | 
												
													
														| 109 |          if request_params['method'] == 'GET':
 | 112 |          if request_params['method'] == 'GET':
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 161 |      for engine in engines.values():
 | 164 |      for engine in engines.values():
 | 
												
													
														| 162 |          if engine.stats['search_count'] == 0:
 | 165 |          if engine.stats['search_count'] == 0:
 | 
												
													
														| 163 |              continue
 | 166 |              continue
 | 
												
													
														| 164 | -        stats[engine.name] = {'Average number of results': engine.stats['result_count']/float(engine.stats['search_count'])}
 |  | 
 | 
												
													
														|  | 
 | 167 | +        results_num = engine.stats['result_count']/float(engine.stats['search_count'])
 | 
												
													
														|  | 
 | 168 | +        load_times  = engine.stats['page_load_time']/float(engine.stats['search_count'])
 | 
												
													
														|  | 
 | 169 | +        stats[engine.name] = {'Average number of results': results_num
 | 
												
													
														|  | 
 | 170 | +                             ,'Average page load time': load_times
 | 
												
													
														|  | 
 | 171 | +                             }
 | 
												
													
														| 165 |  
 | 172 |  
 | 
												
													
														| 166 |      return stats
 | 173 |      return stats
 |