Fix NewConnectionError Try Again
- add 3 retries (0 by default) with backoff to mitigate
"Failed to establish a new connection: [Errno -3] Try again"
- retry is based on urllib3 as request does not do retires
for failed connections (only for failed DNS lookups,
socket connections and connection timeouts)
Change-Id: Ic92a823d02d2afc47f1bc71477695ce33e4be1c6
Related-PROD: PRODX-33632
diff --git a/sf_notifier/salesforce/client.py b/sf_notifier/salesforce/client.py
index d3979e8..f4a8096 100644
--- a/sf_notifier/salesforce/client.py
+++ b/sf_notifier/salesforce/client.py
@@ -4,12 +4,14 @@
import time
import uuid
from contextlib import contextmanager
+from urllib3.util.retry import Retry
from cachetools import TTLCache
from prometheus_client import Counter, Gauge
from requests import Session
+from requests.adapters import HTTPAdapter
from requests.exceptions import ConnectionError as RequestsConnectionError
from simple_salesforce import Salesforce
@@ -93,6 +95,12 @@
self.environment = self.config.pop('environment_id')
self.sf = None
self.session = Session()
+
+ retry = Retry(connect=3, backoff_factor=0.5)
+ adapter = HTTPAdapter(max_retries=retry)
+ self.session.mount('http://', adapter)
+ self.session.mount('https://', adapter)
+
self.auth(no_retry=True)
@staticmethod