mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 09:38:02 +00:00
feat: 增加Oauth Claude账户usage接口缓存
This commit is contained in:
@@ -2107,6 +2107,8 @@ router.get('/claude-accounts', authenticateAdmin, async (req, res) => {
|
||||
router.get('/claude-accounts/usage', authenticateAdmin, async (req, res) => {
|
||||
try {
|
||||
const accounts = await redis.getAllClaudeAccounts()
|
||||
const now = Date.now()
|
||||
const usageCacheTtlMs = 300 * 1000
|
||||
|
||||
// 批量并发获取所有活跃 OAuth 账户的 Usage
|
||||
const usagePromises = accounts.map(async (account) => {
|
||||
@@ -2121,6 +2123,19 @@ router.get('/claude-accounts/usage', authenticateAdmin, async (req, res) => {
|
||||
account.accessToken &&
|
||||
account.status === 'active'
|
||||
) {
|
||||
// 若快照在 300 秒内更新,直接使用缓存避免频繁请求
|
||||
const cachedUsage = claudeAccountService.buildClaudeUsageSnapshot(account)
|
||||
const lastUpdatedAt = account.claudeUsageUpdatedAt
|
||||
? new Date(account.claudeUsageUpdatedAt).getTime()
|
||||
: 0
|
||||
const isCacheFresh = cachedUsage && lastUpdatedAt && now - lastUpdatedAt < usageCacheTtlMs
|
||||
if (isCacheFresh) {
|
||||
return {
|
||||
accountId: account.id,
|
||||
claudeUsage: cachedUsage
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const usageData = await claudeAccountService.fetchOAuthUsage(account.id)
|
||||
if (usageData) {
|
||||
|
||||
Reference in New Issue
Block a user