|  | @@ -25,6 +25,7 @@ from urlparse import urlparse
 | 
	
		
			
			| 25 | 25 |  from searx import settings
 | 
	
		
			
			| 26 | 26 |  import ConfigParser
 | 
	
		
			
			| 27 | 27 |  import sys
 | 
	
		
			
			|  | 28 | +from datetime import datetime
 | 
	
		
			
			| 28 | 29 |  
 | 
	
		
			
			| 29 | 30 |  engine_dir = dirname(realpath(__file__))
 | 
	
		
			
			| 30 | 31 |  searx_dir  = join(engine_dir, '../../')
 | 
	
	
		
			
			|  | @@ -67,7 +68,7 @@ for section in engines_config.sections():
 | 
	
		
			
			| 67 | 68 |              print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr)
 | 
	
		
			
			| 68 | 69 |              sys.exit(1)
 | 
	
		
			
			| 69 | 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 | 72 |      if hasattr(engine, 'categories'):
 | 
	
		
			
			| 72 | 73 |          for category_name in engine.categories:
 | 
	
		
			
			| 73 | 74 |              categories.setdefault(category_name, []).append(engine)
 | 
	
	
		
			
			|  | @@ -81,6 +82,7 @@ def make_callback(engine_name, results, callback, params):
 | 
	
		
			
			| 81 | 82 |      def process_callback(response, **kwargs):
 | 
	
		
			
			| 82 | 83 |          cb_res = []
 | 
	
		
			
			| 83 | 84 |          response.search_params = params
 | 
	
		
			
			|  | 85 | +        engines[engine_name].stats['page_load_time'] += (datetime.now() - params['started']).total_seconds()
 | 
	
		
			
			| 84 | 86 |          for result in callback(response):
 | 
	
		
			
			| 85 | 87 |              result['engine'] = engine_name
 | 
	
		
			
			| 86 | 88 |              cb_res.append(result)
 | 
	
	
		
			
			|  | @@ -104,6 +106,7 @@ def search(query, request, selected_categories):
 | 
	
		
			
			| 104 | 106 |          request_params = default_request_params()
 | 
	
		
			
			| 105 | 107 |          request_params['headers']['User-Agent'] = user_agent
 | 
	
		
			
			| 106 | 108 |          request_params['category'] = selected_engine['category']
 | 
	
		
			
			|  | 109 | +        request_params['started'] = datetime.now()
 | 
	
		
			
			| 107 | 110 |          request_params = engine.request(query, request_params)
 | 
	
		
			
			| 108 | 111 |          callback = make_callback(selected_engine['name'], results, engine.response, request_params)
 | 
	
		
			
			| 109 | 112 |          if request_params['method'] == 'GET':
 | 
	
	
		
			
			|  | @@ -161,6 +164,10 @@ def get_engines_stats():
 | 
	
		
			
			| 161 | 164 |      for engine in engines.values():
 | 
	
		
			
			| 162 | 165 |          if engine.stats['search_count'] == 0:
 | 
	
		
			
			| 163 | 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 | 173 |      return stats
 |