Merge pull request #964 from mautrix/feature/periodic-refresh
Add periodic connection refresh
This commit is contained in:
@@ -241,6 +241,24 @@ class AbstractUser(ABC):
|
|||||||
use_ipv6=self.config["telegram.connection.use_ipv6"],
|
use_ipv6=self.config["telegram.connection.use_ipv6"],
|
||||||
)
|
)
|
||||||
self.client.add_event_handler(self._update_catch)
|
self.client.add_event_handler(self._update_catch)
|
||||||
|
self._schedule_reconnect()
|
||||||
|
|
||||||
|
def _schedule_reconnect(self) -> None:
|
||||||
|
reconnect_interval = self.config["telegram.force_refresh_interval_seconds"]
|
||||||
|
if not reconnect_interval or reconnect_interval == 0:
|
||||||
|
return
|
||||||
|
refresh_time = time.time() + reconnect_interval
|
||||||
|
self.log.info(
|
||||||
|
"Scheduling forced reconnect in %d seconds. Connection will be refreshed at %s",
|
||||||
|
reconnect_interval,
|
||||||
|
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(refresh_time)),
|
||||||
|
)
|
||||||
|
self.loop.call_later(reconnect_interval, lambda: background_task.create(self._reconnect()))
|
||||||
|
|
||||||
|
async def _reconnect(self) -> None:
|
||||||
|
self.log.info("Reconnecting to Telegram...")
|
||||||
|
await self.stop()
|
||||||
|
await self.start()
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def on_signed_out(self, err: UnauthorizedError | AuthKeyError) -> None:
|
async def on_signed_out(self, err: UnauthorizedError | AuthKeyError) -> None:
|
||||||
|
|||||||
@@ -264,6 +264,7 @@ class Config(BaseBridgeConfig):
|
|||||||
copy("telegram.catch_up")
|
copy("telegram.catch_up")
|
||||||
copy("telegram.sequential_updates")
|
copy("telegram.sequential_updates")
|
||||||
copy("telegram.exit_on_update_error")
|
copy("telegram.exit_on_update_error")
|
||||||
|
copy("telegram.force_refresh_interval_seconds")
|
||||||
|
|
||||||
copy("telegram.connection.timeout")
|
copy("telegram.connection.timeout")
|
||||||
copy("telegram.connection.retries")
|
copy("telegram.connection.retries")
|
||||||
|
|||||||
@@ -581,6 +581,8 @@ telegram:
|
|||||||
# Should incoming updates be handled sequentially to make sure order is preserved on Matrix?
|
# Should incoming updates be handled sequentially to make sure order is preserved on Matrix?
|
||||||
sequential_updates: true
|
sequential_updates: true
|
||||||
exit_on_update_error: false
|
exit_on_update_error: false
|
||||||
|
# Interval to force refresh the connection (full reconnect). 0 disables it.
|
||||||
|
force_refresh_interval_seconds: 0
|
||||||
|
|
||||||
# Telethon connection options.
|
# Telethon connection options.
|
||||||
connection:
|
connection:
|
||||||
|
|||||||
Reference in New Issue
Block a user