diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 3d3ab02c51..17e27b25ac 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -353,12 +353,11 @@ DATABASE_SQLITE_PRAGMA_MMAP_SIZE = os.getenv('DATABASE_SQLITE_PRAGMA_MMAP_SIZE', # truncated. 67108864 ≈ 64 MB. Set to -1 for no limit (SQLite default). DATABASE_SQLITE_PRAGMA_JOURNAL_SIZE_LIMIT = os.getenv('DATABASE_SQLITE_PRAGMA_JOURNAL_SIZE_LIMIT', '67108864') -DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = os.getenv('DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL', None) -if DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL is not None: - try: - DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = float(DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL) - except Exception: - DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = 0.0 +# Seconds between presence writes per user per worker; keep under the 180s active-user window. 0 disables. +try: + DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = float(os.getenv('DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL', '60')) +except ValueError: + DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = 60.0 DATABASE_ENABLE_SESSION_SHARING = os.getenv('DATABASE_ENABLE_SESSION_SHARING', 'False').lower() == 'true' ENABLE_PUBLIC_ACTIVE_USERS_COUNT = os.getenv('ENABLE_PUBLIC_ACTIVE_USERS_COUNT', 'True').lower() == 'true' diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 41764dbebb..f8d0f3cd66 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -1109,16 +1109,17 @@ def throttle(interval: float = 10.0): different types, the return type of the function should be T | None. :param interval: Duration in seconds to wait before allowing the function to be called again. + Zero or negative disables throttling. """ def decorator(func): + if interval <= 0: + return func + last_calls = {} lock = threading.Lock() async def wrapper(*args, **kwargs): - if interval is None: - return await func(*args, **kwargs) - key = (args, freeze(kwargs)) now = time.time() if now - last_calls.get(key, 0) < interval: