Skip to content

Commit a66e33c

Browse files
committed
Added Retry
1 parent 4185a5b commit a66e33c

1 file changed

Lines changed: 23 additions & 9 deletions

File tree

  • whatsapp_api_client_python

whatsapp_api_client_python/API.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import Optional
22

33
from requests import Session
4+
from requests.adapters import HTTPAdapter, Retry
45

56
from .response import Response
67
from .tools import (
@@ -35,6 +36,9 @@ def __init__(
3536
self.idInstance = idInstance
3637
self.apiTokenInstance = apiTokenInstance
3738

39+
self.session = Session()
40+
self.__prepare_session()
41+
3842
self.account = account.Account(self)
3943
self.device = device.Device(self)
4044
self.groups = groups.Groups(self)
@@ -59,15 +63,25 @@ def request(
5963
url = url.replace("{{apiTokenInstance}}", self.apiTokenInstance)
6064

6165
try:
62-
with Session() as session:
63-
if not files:
64-
response = session.request(
65-
method=method, url=url, json=payload
66-
)
67-
else:
68-
response = session.request(
69-
method=method, url=url, data=payload, files=files
70-
)
66+
if not files:
67+
response = self.session.request(
68+
method=method, url=url, json=payload
69+
)
70+
else:
71+
response = self.session.request(
72+
method=method, url=url, data=payload, files=files
73+
)
7174
except Exception as error:
7275
return Response(None, f"Other error occurred: {error}.")
7376
return Response(response.status_code, response.text)
77+
78+
def __prepare_session(self) -> None:
79+
retry = Retry(
80+
total=3,
81+
backoff_factor=1.0,
82+
allowed_methods=None,
83+
status_forcelist=[400, 429]
84+
)
85+
86+
self.session.mount("http://", HTTPAdapter(max_retries=retry))
87+
self.session.mount("https://", HTTPAdapter(max_retries=retry))

0 commit comments

Comments
 (0)