dashboard_for_sage/wwwroot/api/get_user_stats.dspy

36 lines
1.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""获取当前用户总数和并发用户数近5分钟有活跃记录的用户"""
from datetime import datetime, timedelta
ns = params_kw.copy()
db = DBPools()
# 总用户数
sql_users = "SELECT COUNT(*) as total_users FROM users"
# 并发用户数近5分钟内在llmusage中有记录的不同用户
now = datetime.now()
five_min_ago = (now - timedelta(minutes=5)).strftime('%Y-%m-%d %H:%M:%S')
today = now.strftime('%Y-%m-%d')
sql_concurrent = """
SELECT COUNT(DISTINCT userid) as concurrent_users
FROM llmusage
WHERE use_date = ${today}$
AND use_time >= ${five_min_ago}$
"""
async with db.sqlorContext('sage') as sor:
user_recs = await sor.sqlExe(sql_users, {})
total_users = int(user_recs[0].get('total_users', 0)) if user_recs else 0
conc_recs = await sor.sqlExe(sql_concurrent, {
'today': today,
'five_min_ago': five_min_ago
})
concurrent_users = int(conc_recs[0].get('concurrent_users', 0)) if conc_recs else 0
return {
'total_users': total_users,
'concurrent_users': concurrent_users
}