@@ -1,5 +1,7 @@
1import requests
1import requests
2from itertools import cycle
3from itertools import cycle
4+from threading import RLock
3from searx import settings
5from searx import settings
@@ -55,9 +57,10 @@ class SessionSinglePool(requests.Session):
55 super(SessionSinglePool, self).__init__()
57 super(SessionSinglePool, self).__init__()
57 # reuse the same adapters
59 # reuse the same adapters
58− self.adapters.clear()
61+ self.adapters.clear()
59− self.mount('https://', next(https_adapters))
62+ self.mount('https://', next(https_adapters))
60− self.mount('http://', next(http_adapters))
63+ self.mount('http://', next(http_adapters))
62 def close(self):
65 def close(self):
63 """Call super, but clear adapters since there are managed globaly"""
66 """Call super, but clear adapters since there are managed globaly"""
@@ -67,7 +70,6 @@ class SessionSinglePool(requests.Session):
68def request(method, url, **kwargs):
71def request(method, url, **kwargs):
69 """same as requests/requests/api.py request(...) except it use SessionSinglePool and force proxies"""
72 """same as requests/requests/api.py request(...) except it use SessionSinglePool and force proxies"""
71 session = SessionSinglePool()
73 session = SessionSinglePool()
72 kwargs['proxies'] = settings['outgoing'].get('proxies', None)
74 kwargs['proxies'] = settings['outgoing'].get('proxies', None)
73 response = session.request(method=method, url=url, **kwargs)
75 response = session.request(method=method, url=url, **kwargs)