mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-06-16 18:16:39 +00: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