Skip to content

Commit c99bfc0

Browse files
authored
Merge pull request #30 from green-api/SW-2065
Added Retry
2 parents 4185a5b + 590df2f commit c99bfc0

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name="whatsapp-api-client-python",
8-
version="0.0.40",
8+
version="0.0.41",
99
description=(
1010
"This library helps you easily create"
1111
" a Python application with WhatsApp API."

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)