diff --git a/outpostspawner/api_flavors_update.py b/outpostspawner/api_flavors_update.py index da84c168bf399c1371c1aad63ede7176991175ef..f696a889d1931c0fd1bf2f5f453690b998d3cf70 100644 --- a/outpostspawner/api_flavors_update.py +++ b/outpostspawner/api_flavors_update.py @@ -52,6 +52,16 @@ async def async_get_flavors(log, user=None): urls_tokens = list( zip(initial_system_urls_list, initial_system_tokens_list) ) + # use pycurl by default, if available: + try: + AsyncHTTPClient.configure( + "tornado.curl_httpclient.CurlAsyncHTTPClient" + ) + except ImportError as e: + log.debug( + "Could not load pycurl: %s\npycurl is recommended if you have a large number of users.", + e, + ) http_client = AsyncHTTPClient( force_instance=True, defaults=dict(validate_cert=False) ) diff --git a/outpostspawner/outpostspawner.py b/outpostspawner/outpostspawner.py index a47e59751d0166a54cc4a800c8b44d1f23dd5ecb..f8650a2ce24bdeb37599c9d17f00c289b420339f 100644 --- a/outpostspawner/outpostspawner.py +++ b/outpostspawner/outpostspawner.py @@ -614,6 +614,15 @@ class OutpostSpawner(ForwardBaseSpawner): @default("http_client") def _default_http_client(self): + """Configure tornado to use pycurl by default, if available""" + # use pycurl by default, if available: + try: + AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient") + except ImportError as e: + self.log.debug( + "Could not load pycurl: %s\npycurl is recommended if you have a large number of users.", + e, + ) return AsyncHTTPClient(force_instance=True, defaults=dict(validate_cert=False)) async def fetch(self, req, action):