|
@@ -15,7 +15,8 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
|
15
|
15
|
(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
|
16
|
16
|
'''
|
17
|
17
|
|
18
|
|
-import grequests
|
|
18
|
+import requests as requests_lib
|
|
19
|
+import threading
|
19
|
20
|
import re
|
20
|
21
|
from itertools import izip_longest, chain
|
21
|
22
|
from datetime import datetime
|
|
@@ -32,6 +33,18 @@ from searx.query import Query
|
32
|
33
|
number_of_searches = 0
|
33
|
34
|
|
34
|
35
|
|
|
36
|
+def threaded_requests(requests):
|
|
37
|
+ for fn, url, request_args in requests:
|
|
38
|
+ th = threading.Thread(
|
|
39
|
+ target=fn, args=(url,), kwargs=request_args, name=url,
|
|
40
|
+ )
|
|
41
|
+ th.start()
|
|
42
|
+
|
|
43
|
+ for th in threading.enumerate():
|
|
44
|
+ if th.name.startswith('http'):
|
|
45
|
+ th.join()
|
|
46
|
+
|
|
47
|
+
|
35
|
48
|
# get default reqest parameter
|
36
|
49
|
def default_request_params():
|
37
|
50
|
return {
|
|
@@ -471,9 +484,9 @@ class Search(object):
|
471
|
484
|
|
472
|
485
|
# specific type of request (GET or POST)
|
473
|
486
|
if request_params['method'] == 'GET':
|
474
|
|
- req = grequests.get
|
|
487
|
+ req = requests_lib.get
|
475
|
488
|
else:
|
476
|
|
- req = grequests.post
|
|
489
|
+ req = requests_lib.post
|
477
|
490
|
request_args['data'] = request_params['data']
|
478
|
491
|
|
479
|
492
|
# ignoring empty urls
|
|
@@ -481,10 +494,10 @@ class Search(object):
|
481
|
494
|
continue
|
482
|
495
|
|
483
|
496
|
# append request to list
|
484
|
|
- requests.append(req(request_params['url'], **request_args))
|
|
497
|
+ requests.append((req, request_params['url'], request_args))
|
485
|
498
|
|
486
|
499
|
# send all search-request
|
487
|
|
- grequests.map(requests)
|
|
500
|
+ threaded_requests(requests)
|
488
|
501
|
|
489
|
502
|
# update engine-specific stats
|
490
|
503
|
for engine_name, engine_results in results.items():
|