mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-02-03 13:14:31 +03:00
Make disconnection more resilient
This commit is contained in:
parent
f2b8a91fa9
commit
9e5eb619e1
|
@ -485,7 +485,7 @@ class Client:
|
|||
return await invoke_request(self, self._sender, self._sender_lock, request)
|
||||
|
||||
async def __aenter__(self) -> Self:
|
||||
await self.connect()
|
||||
await connect(self)
|
||||
return self
|
||||
|
||||
async def __aexit__(
|
||||
|
@ -495,4 +495,4 @@ class Client:
|
|||
tb: Optional[TracebackType],
|
||||
) -> None:
|
||||
exc_type, exc, tb
|
||||
await self.disconnect()
|
||||
await disconnect(self)
|
||||
|
|
|
@ -141,14 +141,24 @@ async def connect(self: Client) -> None:
|
|||
async def disconnect(self: Client) -> None:
|
||||
if not self._sender:
|
||||
return
|
||||
|
||||
assert self._dispatcher
|
||||
self._dispatcher.cancel()
|
||||
await self._dispatcher
|
||||
self._dispatcher = None
|
||||
|
||||
await self._sender.disconnect()
|
||||
self._sender = None
|
||||
self._dispatcher.cancel()
|
||||
try:
|
||||
await self._dispatcher
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
except Exception:
|
||||
pass # TODO log
|
||||
finally:
|
||||
self._dispatcher = None
|
||||
|
||||
try:
|
||||
await self._sender.disconnect()
|
||||
except Exception:
|
||||
pass # TODO log
|
||||
finally:
|
||||
self._sender = None
|
||||
|
||||
self._config.session.state = self._message_box.session_state()
|
||||
await self._storage.save(self._config.session)
|
||||
|
|
Loading…
Reference in New Issue
Block a user