Skip to content

Commit 8abdfdd

Browse files
committed
WIP retry failed requests
1 parent 8e5cb58 commit 8abdfdd

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

telegram/bot.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ def decorator(self, *args, **kwargs):
115115

116116
return decorator
117117

118-
@staticmethod
119-
def _post_message(url, data, msg_cls=Message, expect_list=False, timeout=None, **kwargs):
118+
def _post_message(self, url, data, msg_cls=Message, expect_list=False, timeout=None, **kwargs):
120119
reply_to_message_id = kwargs.get('reply_to_message_id')
121120
if reply_to_message_id:
122121
data['reply_to_message_id'] = reply_to_message_id
@@ -131,7 +130,7 @@ def _post_message(url, data, msg_cls=Message, expect_list=False, timeout=None, *
131130
reply_markup = reply_markup.to_json()
132131
data['reply_markup'] = reply_markup
133132

134-
result = request.post(url, data, timeout=timeout)
133+
result = self._request_wrapper(request.post, url, data, timeout=timeout)
135134

136135
if isinstance(result, int):
137136
# int covers both boolean & integer results
@@ -142,6 +141,11 @@ def _post_message(url, data, msg_cls=Message, expect_list=False, timeout=None, *
142141

143142
return msg_cls.de_json(result)
144143

144+
def _request_wrapper(self, method, url, *args, **kwargs):
145+
# classes inheriting from Bot, can wrap this method in order to perform retries
146+
# this is intended to be used only with request.post() & request.get()
147+
return method(url, *args, **kwargs)
148+
145149
@log
146150
def getMe(self, **kwargs):
147151
"""A simple method for testing your bot's auth token.
@@ -158,7 +162,7 @@ def getMe(self, **kwargs):
158162

159163
url = '{0}/getMe'.format(self.base_url)
160164

161-
result = request.get(url)
165+
result = self._request_wrapper(request.get, url)
162166

163167
self._bot = User.de_json(result)
164168

0 commit comments

Comments
 (0)