@@ -74,10 +74,10 @@ def search_one_request(engine, query, request_params):
75 # ignoring empty urls
75 # ignoring empty urls
76 if request_params['url'] is None:
76 if request_params['url'] is None:
77− return []
77+ return None
79 if not request_params['url']:
79 if not request_params['url']:
80− return []
80+ return None
82 # send request
82 # send request
83 response = send_http_request(engine, request_params)
83 response = send_http_request(engine, request_params)
@@ -103,20 +103,29 @@ def search_one_request_safe(engine_name, query, request_params, result_container
103 # send requests and parse the results
103 # send requests and parse the results
104 search_results = search_one_request(engine, query, request_params)
104 search_results = search_one_request(engine, query, request_params)
106+ # check if the engine accepted the request
107+ if search_results is not None:
106− # add results
108+ # yes, so add results
107− result_container.extend(engine_name, search_results)
109+ result_container.extend(engine_name, search_results)
109− # update engine time when there is no exception
111+ # update engine time when there is no exception
110− with threading.RLock():
111− engine.stats['engine_time'] += time() - start_time
112+ engine_time = time() - start_time
113+ page_load_time = requests_lib.get_time_for_thread()
114+ result_container.add_timing(engine_name, engine_time, page_load_time)
115+ with threading.RLock():
116+ engine.stats['engine_time'] += engine_time
112− engine.stats['engine_time_count'] += 1
117+ engine.stats['engine_time_count'] += 1
113− # update stats with the total HTTP time
118+ # update stats with the total HTTP time
114− engine.stats['page_load_time'] += requests_lib.get_time_for_thread()
119+ engine.stats['page_load_time'] += page_load_time
115− engine.stats['page_load_count'] += 1
120+ engine.stats['page_load_count'] += 1
117 except Exception as e:
122 except Exception as e:
118− search_duration = time() - start_time
124+ engine_time = time() - start_time
125+ page_load_time = requests_lib.get_time_for_thread()
126+ result_container.add_timing(engine_name, engine_time, page_load_time)
120 with threading.RLock():
129 with threading.RLock():
121 engine.stats['errors'] += 1
130 engine.stats['errors'] += 1
@@ -125,14 +134,14 @@ def search_one_request_safe(engine_name, query, request_params, result_container
125 # requests timeout (connect or read)
134 # requests timeout (connect or read)
126 logger.error("engine {0} : HTTP requests timeout"
135 logger.error("engine {0} : HTTP requests timeout"
127 "(search duration : {1} s, timeout: {2} s) : {3}"
136 "(search duration : {1} s, timeout: {2} s) : {3}"
128− .format(engine_name, search_duration, timeout_limit, e.__class__.__name__))
137+ .format(engine_name, engine_time, timeout_limit, e.__class__.__name__))
129 requests_exception = True
138 requests_exception = True
130 elif (issubclass(e.__class__, requests.exceptions.RequestException)):
139 elif (issubclass(e.__class__, requests.exceptions.RequestException)):
131 result_container.add_unresponsive_engine((engine_name, gettext('request exception')))
140 result_container.add_unresponsive_engine((engine_name, gettext('request exception')))
132 # other requests exception
141 # other requests exception
133 logger.exception("engine {0} : requests exception"
142 logger.exception("engine {0} : requests exception"
134 "(search duration : {1} s, timeout: {2} s) : {3}"
143 "(search duration : {1} s, timeout: {2} s) : {3}"
135− .format(engine_name, search_duration, timeout_limit, e))
144+ .format(engine_name, engine_time, timeout_limit, e))
136 requests_exception = True
145 requests_exception = True
138 result_container.add_unresponsive_engine((
147 result_container.add_unresponsive_engine((