@@ -3,6 +3,7 @@ from os.path import realpath, dirname, splitext, join
33from os import listdir
44from imp import load_source
55import grequests
6+from itertools import izip_longest, chain
67
78engine_dir = dirname(realpath(__file__))
89
@@ -23,15 +24,17 @@ def default_request_params():
2324
2425def make_callback(engine_name, results, callback):
2526 def process_callback(response, **kwargs):
27+ cb_res = []
2628 for result in callback(response):
2729 result['engine'] = engine_name
28− results.append(result)
30+ cb_res.append(result)
31+ results[engine_name] = cb_res
2932 return process_callback
3033
3134def search(query, request, selected_engines):
3235 global engines
3336 requests = []
34− results = []
37+ results = {}
3538 user_agent = request.headers.get('User-Agent', '')
3639 for ename, engine in engines.items():
3740 if ename not in selected_engines:
@@ -53,4 +56,4 @@ def search(query, request, selected_engines):
5356 )
5457 requests.append(req)
5558 grequests.map(requests)
56− return results
59+ return list(filter(None, chain(*izip_longest(*results.values()))))