Skip to content

Commit a96223c

Browse files
committed
Fix VkApi.method raw arg passing from exception via .try_again()
1 parent 546d38b commit a96223c

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

vk_api/exceptions.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,18 @@ def __str__(self):
6262

6363
class ApiError(VkApiError):
6464

65-
def __init__(self, vk, method, values, error):
65+
def __init__(self, vk, method, values, raw, error):
6666
self.vk = vk
6767
self.method = method
6868
self.values = values
69+
self.raw = raw
6970
self.code = error['error_code']
7071
self.error = error
7172

7273
def try_method(self):
7374
""" Отправить запрос заново """
7475

75-
return self.vk.method(self.method, self.values)
76+
return self.vk.method(self.method, self.values, raw=self.raw)
7677

7778
def __str__(self):
7879
return '[{}] {}'.format(self.error['error_code'],
@@ -81,16 +82,17 @@ def __str__(self):
8182

8283
class ApiHttpError(VkApiError):
8384

84-
def __init__(self, vk, method, values, response):
85+
def __init__(self, vk, method, values, raw, response):
8586
self.vk = vk
8687
self.method = method
8788
self.values = values
89+
self.raw = raw
8890
self.response = response
8991

9092
def try_method(self):
9193
""" Отправить запрос заново """
9294

93-
return self.vk.method(self.method, self.values)
95+
return self.vk.method(self.method, self.values, raw=self.raw)
9496

9597
def __str__(self):
9698
return 'Response code {}'.format(self.response.status_code)

vk_api/vk_api.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,8 @@ def too_many_rps_handler(self, error):
483483
:param error: исключение
484484
"""
485485

486+
self.logger.warning('Too many requests! Sleeping 0.5 sec...')
487+
486488
time.sleep(0.5)
487489
return error.try_method()
488490

@@ -551,7 +553,7 @@ def method(self, method, values=None, captcha_sid=None, captcha_key=None,
551553
if response.ok:
552554
response = response.json()
553555
else:
554-
error = ApiHttpError(self, method, values, response)
556+
error = ApiHttpError(self, method, values, raw, response)
555557
response = self.http_handler(error)
556558

557559
if response is not None:
@@ -560,7 +562,7 @@ def method(self, method, values=None, captcha_sid=None, captcha_key=None,
560562
raise error
561563

562564
if 'error' in response:
563-
error = ApiError(self, method, values, response['error'])
565+
error = ApiError(self, method, values, raw, response['error'])
564566

565567
if error.code in self.error_handlers:
566568
if error.code == CAPTCHA_ERROR_CODE:

0 commit comments

Comments
 (0)