mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-09-18 18:02:51 +03:00
Refactor reconnection policy handling to support None as a valid state
This commit is contained in:
parent
f77b2907ba
commit
9386210005
|
@ -10,7 +10,7 @@ from typing_extensions import Self
|
|||
|
||||
from ....version import __version__ as default_version
|
||||
from ...mtsender import Connector, Sender
|
||||
from ...mtsender.reconnection import NoReconnect, ReconnectionPolicy
|
||||
from ...mtsender.reconnection import ReconnectionPolicy
|
||||
from ...session import (
|
||||
ChannelRef,
|
||||
ChatHashCache,
|
||||
|
@ -248,7 +248,7 @@ class Client:
|
|||
update_queue_limit=update_queue_limit,
|
||||
base_logger=base_logger,
|
||||
connector=connector or (lambda ip, port: asyncio.open_connection(ip, port)),
|
||||
reconnection_policy=reconnection_policy or NoReconnect(),
|
||||
reconnection_policy=reconnection_policy,
|
||||
)
|
||||
|
||||
self._session = Session()
|
||||
|
|
|
@ -46,7 +46,7 @@ class Config:
|
|||
api_hash: str
|
||||
base_logger: logging.Logger
|
||||
connector: Connector
|
||||
reconnection_policy: ReconnectionPolicy
|
||||
reconnection_policy: Optional[ReconnectionPolicy] = None
|
||||
device_model: str = field(default_factory=default_device_model)
|
||||
system_version: str = field(default_factory=default_system_version)
|
||||
app_version: str = __version__
|
||||
|
|
|
@ -166,7 +166,7 @@ class Sender:
|
|||
addr: str
|
||||
mtp: Mtp
|
||||
_connector: Connector
|
||||
_reconnection_policy: ReconnectionPolicy
|
||||
_reconnection_policy: ReconnectionPolicy | None
|
||||
_logger: logging.Logger
|
||||
_reader: AsyncReader
|
||||
_writer: AsyncWriter
|
||||
|
@ -190,7 +190,7 @@ class Sender:
|
|||
addr: str,
|
||||
*,
|
||||
connector: Connector,
|
||||
reconnection_policy: ReconnectionPolicy,
|
||||
reconnection_policy: ReconnectionPolicy | None = None,
|
||||
base_logger: logging.Logger,
|
||||
) -> Self:
|
||||
ip, port = addr.split(":")
|
||||
|
@ -304,6 +304,10 @@ class Sender:
|
|||
)
|
||||
return
|
||||
except Exception as e:
|
||||
if self._reconnection_policy is None:
|
||||
self._logger.info("auto-reconnect disabled, not retrying")
|
||||
raise
|
||||
|
||||
attempts += 1
|
||||
self._logger.warning(f"auto-reconnect failed {attempts} time(s): {e!r}")
|
||||
await asyncio.sleep(1)
|
||||
|
@ -387,7 +391,9 @@ class Sender:
|
|||
self._read_buffer.clear()
|
||||
self._mtp_buffer.clear()
|
||||
|
||||
if isinstance(error, struct.error) and self._reconnection_policy.should_retry(
|
||||
if self._reconnection_policy is None:
|
||||
self._logger.info("auto-reconnect disabled, not retrying")
|
||||
elif isinstance(error, struct.error) and self._reconnection_policy.should_retry(
|
||||
0
|
||||
):
|
||||
self._logger.info(f"read error occurred: {error}")
|
||||
|
@ -564,7 +570,7 @@ async def connect(
|
|||
auth_key: Optional[bytes],
|
||||
base_logger: logging.Logger,
|
||||
connector: Connector,
|
||||
reconnection_policy: ReconnectionPolicy,
|
||||
reconnection_policy: ReconnectionPolicy | None = None,
|
||||
) -> Sender:
|
||||
if auth_key is None:
|
||||
sender = await Sender.connect(
|
||||
|
|
Loading…
Reference in New Issue
Block a user