Просмотр исходного кода

[enh] gevent/grequests changed to the built-in threading lib

Adam Tauber 10 лет назад
Родитель
Сommit
d959cb1c05
5 измененных файлов: 20 добавлений и 23 удалений
  1. 1
    1
      requirements.txt
  2. 18
    5
      searx/search.py
  3. 0
    4
      searx/webapp.py
  4. 1
    1
      setup.py
  5. 0
    12
      versions.cfg

+ 1
- 1
requirements.txt Просмотреть файл

@@ -1,6 +1,6 @@
1 1
 flask
2 2
 flask-babel
3
-grequests
3
+requests
4 4
 lxml
5 5
 pyyaml
6 6
 python-dateutil

+ 18
- 5
searx/search.py Просмотреть файл

@@ -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():

+ 0
- 4
searx/webapp.py Просмотреть файл

@@ -17,10 +17,6 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
17 17
 (C) 2013- by Adam Tauber, <asciimoo@gmail.com>
18 18
 '''
19 19
 
20
-from gevent import monkey
21
-monkey.patch_all()
22
-
23
-
24 20
 if __name__ == '__main__':
25 21
     from sys import path
26 22
     from os.path import realpath, dirname

+ 1
- 1
setup.py Просмотреть файл

@@ -41,7 +41,7 @@ setup(
41 41
     install_requires=[
42 42
         'flask',
43 43
         'flask-babel',
44
-        'grequests',
44
+        'requests',
45 45
         'lxml',
46 46
         'pyyaml',
47 47
         'setuptools',

+ 0
- 12
versions.cfg Просмотреть файл

@@ -37,18 +37,6 @@ zc.recipe.testrunner = 2.0.0
37 37
 beautifulsoup4 = 4.3.2
38 38
 
39 39
 # Required by:
40
-# grequests==0.2.0
41
-gevent = 1.0
42
-
43
-# Required by:
44
-# gevent==1.0
45
-greenlet = 0.4.2
46
-
47
-# Required by:
48
-# searx==0.1
49
-grequests = 0.2.0
50
-
51
-# Required by:
52 40
 # robotframework-httplibrary==0.4.2
53 41
 jsonpatch = 1.3
54 42