misc: add connection pooling and keep-alive (#40600)
This commit is contained in:
parent
ac1d7d30a3
commit
de68242a59
|
@ -27,6 +27,7 @@ import unicodedata
|
|||
import hashlib
|
||||
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter
|
||||
|
||||
try:
|
||||
from PIL import Image
|
||||
|
@ -315,8 +316,17 @@ def _http_request(url, method='GET', body=None, headers={}, cert_file=None, time
|
|||
hostname = splitted_url.netloc
|
||||
timeout = timeout or settings.REQUESTS_TIMEOUT
|
||||
|
||||
# re-use HTTP adapter to get connection pooling and keep-alive.
|
||||
adapter = getattr(get_publisher(), '_http_adapter', None)
|
||||
if adapter is None:
|
||||
adapter = get_publisher()._http_adapter = HTTPAdapter()
|
||||
|
||||
session = requests.Session()
|
||||
session.mount('http://', adapter)
|
||||
session.mount('https://', adapter)
|
||||
|
||||
try:
|
||||
response = requests.request(method, url, headers=headers, data=body,
|
||||
response = session.request(method, url, headers=headers, data=body,
|
||||
timeout=timeout, cert=cert_file, proxies=settings.REQUESTS_PROXIES)
|
||||
except requests.Timeout:
|
||||
raise ConnectionError('connection timed out while fetching the page')
|
||||
|
|
|
@ -481,6 +481,7 @@ class QommonPublisher(Publisher, object):
|
|||
|
||||
self.initialize_app_dir()
|
||||
self.set_config(request)
|
||||
self._http_adapter = None
|
||||
|
||||
request.language = self.get_site_language()
|
||||
self.install_lang(request)
|
||||
|
|
Loading…
Reference in New Issue