mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-01 10:49:58 +03:00
modified retry range
This commit is contained in:
parent
7163c17808
commit
73dd8fa69e
|
@ -95,13 +95,16 @@ def strip_text(text, entities):
|
|||
return text
|
||||
|
||||
|
||||
def retry_range(retries):
|
||||
def retry_range(retries, reconnect=False):
|
||||
"""
|
||||
Generates an integer sequence starting from 1. If `retries` is
|
||||
not a zero or a positive integer value, the sequence will be
|
||||
infinite, otherwise it will end at `retries + 1`.
|
||||
"""
|
||||
|
||||
if retries == 0 and not reconnect:
|
||||
yield 1
|
||||
|
||||
attempt = 0
|
||||
while attempt != retries:
|
||||
yield 1 + attempt
|
||||
|
|
|
@ -358,36 +358,32 @@ class MTProtoSender:
|
|||
self._state.reset()
|
||||
|
||||
retries = self._retries if self._auto_reconnect else 0
|
||||
if retries:
|
||||
for attempt in retry_range(retries):
|
||||
try:
|
||||
await self._connect()
|
||||
except (IOError, asyncio.TimeoutError) as e:
|
||||
last_error = e
|
||||
self._log.info('Failed reconnection attempt %d with %s',
|
||||
attempt, e.__class__.__name__)
|
||||
|
||||
await asyncio.sleep(self._delay)
|
||||
except Exception as e:
|
||||
last_error = e
|
||||
self._log.exception('Unexpected exception reconnecting on '
|
||||
'attempt %d', attempt)
|
||||
|
||||
await asyncio.sleep(self._delay)
|
||||
else:
|
||||
self._send_queue.extend(self._pending_state.values())
|
||||
self._pending_state.clear()
|
||||
|
||||
if self._auto_reconnect_callback:
|
||||
asyncio.get_event_loop().create_task(self._auto_reconnect_callback())
|
||||
|
||||
break
|
||||
|
||||
attempt = 0
|
||||
for attempt in retry_range(retries,reconnect=True):
|
||||
try:
|
||||
await self._connect()
|
||||
except (IOError, asyncio.TimeoutError) as e:
|
||||
last_error = e
|
||||
self._log.info('Failed reconnection attempt %d with %s',
|
||||
attempt, e.__class__.__name__)
|
||||
await asyncio.sleep(self._delay)
|
||||
except Exception as e:
|
||||
last_error = e
|
||||
self._log.exception('Unexpected exception reconnecting on '
|
||||
'attempt %d', attempt)
|
||||
await asyncio.sleep(self._delay)
|
||||
else:
|
||||
self._log.error('Automatic reconnection failed %d time(s)', attempt)
|
||||
await self._disconnect(error=last_error.with_traceback(None))
|
||||
self._send_queue.extend(self._pending_state.values())
|
||||
self._pending_state.clear()
|
||||
if self._auto_reconnect_callback:
|
||||
asyncio.get_event_loop().create_task(self._auto_reconnect_callback())
|
||||
|
||||
break
|
||||
else:
|
||||
self._log.error('Automatic reconnection is False.')
|
||||
await self._disconnect(error=last_error.with_traceback(None))
|
||||
self._log.error('Automatic reconnection failed %d time(s)', attempt)
|
||||
await self._disconnect(error=last_error.with_traceback(None))
|
||||
|
||||
|
||||
def _start_reconnect(self, error):
|
||||
"""Starts a reconnection in the background."""
|
||||
|
|
Loading…
Reference in New Issue
Block a user