mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-14 21:35:19 +00:00
refac
This commit is contained in:
parent
bed6aa63e1
commit
7f0c50f445
3 changed files with 15 additions and 8 deletions
|
|
@ -343,12 +343,16 @@ DATABASE_ENABLE_SQLITE_WAL = (
|
||||||
os.environ.get("DATABASE_ENABLE_SQLITE_WAL", "False").lower() == "true"
|
os.environ.get("DATABASE_ENABLE_SQLITE_WAL", "False").lower() == "true"
|
||||||
)
|
)
|
||||||
|
|
||||||
DATABASE_DEDUPLICATE_INTERVAL = os.environ.get("DATABASE_DEDUPLICATE_INTERVAL", None)
|
DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = os.environ.get(
|
||||||
if DATABASE_DEDUPLICATE_INTERVAL is not None:
|
"DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL", None
|
||||||
|
)
|
||||||
|
if DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL is not None:
|
||||||
try:
|
try:
|
||||||
DATABASE_DEDUPLICATE_INTERVAL = float(DATABASE_DEDUPLICATE_INTERVAL)
|
DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = float(
|
||||||
|
DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL
|
||||||
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
DATABASE_DEDUPLICATE_INTERVAL = 0.0
|
DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL = 0.0
|
||||||
|
|
||||||
RESET_CONFIG_ON_START = (
|
RESET_CONFIG_ON_START = (
|
||||||
os.environ.get("RESET_CONFIG_ON_START", "False").lower() == "true"
|
os.environ.get("RESET_CONFIG_ON_START", "False").lower() == "true"
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ from typing import Optional
|
||||||
from open_webui.internal.db import Base, JSONField, get_db
|
from open_webui.internal.db import Base, JSONField, get_db
|
||||||
|
|
||||||
|
|
||||||
from open_webui.env import DATABASE_DEDUPLICATE_INTERVAL
|
from open_webui.env import DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL
|
||||||
from open_webui.models.chats import Chats
|
from open_webui.models.chats import Chats
|
||||||
from open_webui.models.groups import Groups
|
from open_webui.models.groups import Groups
|
||||||
from open_webui.utils.misc import deduplicate
|
from open_webui.utils.misc import throttle
|
||||||
|
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
@ -313,7 +313,7 @@ class UsersTable:
|
||||||
except Exception:
|
except Exception:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@deduplicate(DATABASE_DEDUPLICATE_INTERVAL)
|
@throttle(DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL)
|
||||||
def update_user_last_active_by_id(self, id: str) -> Optional[UserModel]:
|
def update_user_last_active_by_id(self, id: str) -> Optional[UserModel]:
|
||||||
try:
|
try:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
|
|
|
||||||
|
|
@ -492,7 +492,7 @@ def freeze(value):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def deduplicate(interval: float = 10.0):
|
def throttle(interval: float = 10.0):
|
||||||
"""
|
"""
|
||||||
Decorator to prevent a function from being called more than once within a specified duration.
|
Decorator to prevent a function from being called more than once within a specified duration.
|
||||||
If the function is called again within the duration, it returns None. To avoid returning
|
If the function is called again within the duration, it returns None. To avoid returning
|
||||||
|
|
@ -506,6 +506,9 @@ def deduplicate(interval: float = 10.0):
|
||||||
lock = threading.Lock()
|
lock = threading.Lock()
|
||||||
|
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
|
if interval is None:
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
|
||||||
key = (args, freeze(kwargs))
|
key = (args, freeze(kwargs))
|
||||||
now = time.time()
|
now = time.time()
|
||||||
if now - last_calls.get(key, 0) < interval:
|
if now - last_calls.get(key, 0) < interval:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue