Treat all error codes as positive

This means that -500 errors will now behave like 500 errors
correctly so the -500 "No workers running" will properly be
caught and the library will retry requests by default.
This commit is contained in:
Lonami Exo 2019-04-23 11:28:09 +02:00
parent 665c844c9d
commit 56595e4a9c
2 changed files with 9 additions and 3 deletions

View File

@ -34,7 +34,13 @@ def rpc_message_to_error(rpc_error, request):
capture = int(m.group(1)) if m.groups() else None
return cls(request, capture=capture)
cls = base_errors.get(rpc_error.error_code)
# Some errors are negative:
# * -500 for "No workers running",
# * -503 for "Timeout"
#
# We treat them as if they were positive, so -500 will be treated
# as a `ServerError`, etc.
cls = base_errors.get(abs(rpc_error.error_code))
if cls:
return cls(request, rpc_error.error_message)

View File

@ -100,7 +100,7 @@ class ServerError(RPCError):
for example, there was a disruption while accessing a database or file
storage.
"""
code = 500
code = 500 # Also witnessed as -500
message = 'INTERNAL'
def __init__(self, request, message):
@ -113,7 +113,7 @@ class BotTimeout(RPCError):
Clicking the inline buttons of bots that never (or take to long to)
call ``answerCallbackQuery`` will result in this "special" RPCError.
"""
code = -503
code = 503 # Only witnessed as -503
message = 'Timeout'
def __init__(self, request, message):