Parcourir la source

Merge pull request #549 from guyou/feature-pool-fine-tuning

Use new settings to fine tune the connection pool
Adam Tauber il y a 9 ans
Parent
révision
bf1eebb17f
2 fichiers modifiés avec 10 ajouts et 4 suppressions
  1. 8
    4
      searx/poolrequests.py
  2. 2
    0
      searx/settings.yml

+ 8
- 4
searx/poolrequests.py Voir le fichier

41
                               block=self._pool_block, **self._conn_params)
41
                               block=self._pool_block, **self._conn_params)
42
 
42
 
43
 
43
 
44
+connect = settings['outgoing'].get('pool_connections', 100)  # Magic number kept from previous code
45
+maxsize = settings['outgoing'].get('pool_maxsize', requests.adapters.DEFAULT_POOLSIZE)  # Picked from constructor
44
 if settings['outgoing'].get('source_ips'):
46
 if settings['outgoing'].get('source_ips'):
45
-    http_adapters = cycle(HTTPAdapterWithConnParams(pool_connections=100, source_address=(source_ip, 0))
47
+    http_adapters = cycle(HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize,
48
+                                                    source_address=(source_ip, 0))
46
                           for source_ip in settings['outgoing']['source_ips'])
49
                           for source_ip in settings['outgoing']['source_ips'])
47
-    https_adapters = cycle(HTTPAdapterWithConnParams(pool_connections=100, source_address=(source_ip, 0))
50
+    https_adapters = cycle(HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize,
51
+                                                     source_address=(source_ip, 0))
48
                            for source_ip in settings['outgoing']['source_ips'])
52
                            for source_ip in settings['outgoing']['source_ips'])
49
 else:
53
 else:
50
-    http_adapters = cycle((HTTPAdapterWithConnParams(pool_connections=100), ))
51
-    https_adapters = cycle((HTTPAdapterWithConnParams(pool_connections=100), ))
54
+    http_adapters = cycle((HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize), ))
55
+    https_adapters = cycle((HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize), ))
52
 
56
 
53
 
57
 
54
 class SessionSinglePool(requests.Session):
58
 class SessionSinglePool(requests.Session):

+ 2
- 0
searx/settings.yml Voir le fichier

21
 outgoing: # communication with search engines
21
 outgoing: # communication with search engines
22
     request_timeout : 2.0 # seconds
22
     request_timeout : 2.0 # seconds
23
     useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator
23
     useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator
24
+    pool_connections : 100 # Number of different hosts
25
+    pool_maxsize : 10 # Number of simultaneous requests by host
24
 # uncomment below section if you want to use a proxy
26
 # uncomment below section if you want to use a proxy
25
 # see http://docs.python-requests.org/en/latest/user/advanced/#proxies
27
 # see http://docs.python-requests.org/en/latest/user/advanced/#proxies
26
 # SOCKS proxies are not supported : see https://github.com/kennethreitz/requests/pull/478
28
 # SOCKS proxies are not supported : see https://github.com/kennethreitz/requests/pull/478