Spaces:
Sleeping
Sleeping
File size: 2,001 Bytes
69c12a2 4f39165 69c12a2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # app/runtime/request_limit.py
from datetime import date
import gradio as gr
from ui.i18n.translations import translations
# --- Request count management ---
anon_request_count = 0
user_request_counts = {}
last_reset_date = date.today()
ANON_DAILY_LIMIT = 20
USER_DAILY_LIMIT = 15
def reset_counters():
global anon_request_count, user_request_counts, last_reset_date
today = date.today()
anon_request_count = 0
user_request_counts = {}
last_reset_date = today
def check_limit(hf_token: gr.OAuthToken | None, hf_user, lang="en") -> tuple[bool, str, str]:
global anon_request_count, user_request_counts
today = date.today()
if today != last_reset_date:
reset_counters()
if hf_token is None or not hf_token.token:
if anon_request_count >= ANON_DAILY_LIMIT:
msg = translations[lang]["status"].format(login_status="guest", remains=0)
return False, msg, "guest"
anon_request_count += 1
remaining = ANON_DAILY_LIMIT - anon_request_count
msg = translations[lang]['status'].format(login_status="guest", remains=remaining)
return True, msg, "guest"
else:
user_id = hf_user if hf_user else (hf_token.user if hasattr(hf_token, "user") else hf_token.token[:8])
count = user_request_counts.get(user_id, 0)
if count >= USER_DAILY_LIMIT:
msg = translations[lang]["status"].format(login_status=user_id, remains=0)
return False, msg, user_id
user_request_counts[user_id] = count + 1
remaining = USER_DAILY_LIMIT - user_request_counts[user_id]
msg = translations[lang]['status'].format(login_status=user_id, remains=remaining)
return True, msg, user_id
def get_guest_req_count():
return ANON_DAILY_LIMIT - anon_request_count
def get_req_count(hf_user):
if hf_user == "_guest":
return ANON_DAILY_LIMIT - anon_request_count
else:
return USER_DAILY_LIMIT - user_request_counts.get(hf_user) |