misc: add connection pooling and keep-alive (#40600)

This commit is contained in:
Frédéric Péters 2020-03-10 11:11:55 +01:00
parent ac1d7d30a3
commit de68242a59
2 changed files with 12 additions and 1 deletions

View File

@ -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')

View File

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