From 77bdff69b628240f3a7ec1aa18f12dcb3a262f95 Mon Sep 17 00:00:00 2001 From: whitefang <83544729+vantough@users.noreply.github.com> Date: Fri, 3 Apr 2026 22:01:29 +0530 Subject: [PATCH] Add Redis keepalive background updater on startup --- pyUltroid/__main__.py | 2 ++ pyUltroid/startup/_database.py | 4 ++-- pyUltroid/startup/funcs.py | 30 ++++++++++++++++++++++++++++++ pyUltroid/version.py | 4 ++-- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/pyUltroid/__main__.py b/pyUltroid/__main__.py index e87d368e47..061b79ea7e 100644 --- a/pyUltroid/__main__.py +++ b/pyUltroid/__main__.py @@ -18,6 +18,7 @@ def main(): WasItRestart, autopilot, customize, + keep_redis_alive, plug, ready, startup_stuff, @@ -49,6 +50,7 @@ def main(): LOGS.info("Initialising...") ultroid_bot.run_in_loop(autopilot()) + ultroid_bot.loop.create_task(keep_redis_alive()) pmbot = udB.get_key("PMBOT") manager = udB.get_key("MANAGER") diff --git a/pyUltroid/startup/_database.py b/pyUltroid/startup/_database.py index 2611a5c32d..d6845c9199 100644 --- a/pyUltroid/startup/_database.py +++ b/pyUltroid/startup/_database.py @@ -274,11 +274,11 @@ def __init__( if platform.lower() == "qovery" and not host: var, hash_, host, password = "", "", "", "" for vars_ in os.environ: - if vars_.startswith("QOVERY_REDIS_") and vars.endswith("_HOST"): + if vars_.startswith("QOVERY_REDIS_") and vars_.endswith("_HOST"): var = vars_ if var: hash_ = var.split("_", maxsplit=2)[1].split("_")[0] - if hash: + if hash_: kwargs["host"] = os.environ.get(f"QOVERY_REDIS_{hash_}_HOST") kwargs["port"] = os.environ.get(f"QOVERY_REDIS_{hash_}_PORT") kwargs["password"] = os.environ.get(f"QOVERY_REDIS_{hash_}_PASSWORD") diff --git a/pyUltroid/startup/funcs.py b/pyUltroid/startup/funcs.py index 39ca973d45..eda2fa39c2 100644 --- a/pyUltroid/startup/funcs.py +++ b/pyUltroid/startup/funcs.py @@ -10,6 +10,7 @@ import random import shutil import time +from datetime import datetime, timezone as dt_timezone from random import randint from ..configs import Var @@ -47,6 +48,8 @@ from ..fns.helper import download_file, inline_mention, updater db_url = 0 +REDIS_KEEPALIVE_KEY = "KEEP_ACTIVE" +REDIS_KEEPALIVE_INTERVAL_SECONDS = 7 * 24 * 60 * 60 async def autoupdate_local_database(): @@ -152,6 +155,33 @@ async def startup_stuff(): time.tzset() +async def keep_redis_alive(): + from .. import udB + + if udB.name != "Redis": + return + + interval = udB.get_key("REDIS_KEEPALIVE_INTERVAL") + try: + interval = int(interval) if interval else REDIS_KEEPALIVE_INTERVAL_SECONDS + except (TypeError, ValueError): + interval = REDIS_KEEPALIVE_INTERVAL_SECONDS + interval = max(interval, 60) + + while True: + try: + now = datetime.now(dt_timezone.utc).strftime("%Y-%m-%d %H:%M:%S UTC") + udB.set_key(REDIS_KEEPALIVE_KEY, f"Updated value at {now}") + LOGS.debug( + "Redis keepalive updated key '%s' (next run in %s seconds).", + REDIS_KEEPALIVE_KEY, + interval, + ) + except Exception as exc: + LOGS.warning("Redis keepalive update failed: %s", exc) + await asyncio.sleep(interval) + + async def autobot(): from .. import udB, ultroid_bot diff --git a/pyUltroid/version.py b/pyUltroid/version.py index 592d3fd0b6..9752b2c2ec 100644 --- a/pyUltroid/version.py +++ b/pyUltroid/version.py @@ -1,2 +1,2 @@ -__version__ = "2025.05.31" -ultroid_version = "2.1.1" +__version__ = "2026.04.03" +ultroid_version = "2.1.2"