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) => {
|
router.get('/claude-accounts/usage', authenticateAdmin, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const accounts = await redis.getAllClaudeAccounts()
|
const accounts = await redis.getAllClaudeAccounts()
|
||||||
|
const now = Date.now()
|
||||||
|
const usageCacheTtlMs = 300 * 1000
|
||||||
|
|
||||||
// 批量并发获取所有活跃 OAuth 账户的 Usage
|
// 批量并发获取所有活跃 OAuth 账户的 Usage
|
||||||
const usagePromises = accounts.map(async (account) => {
|
const usagePromises = accounts.map(async (account) => {
|
||||||
@@ -2121,6 +2123,19 @@ router.get('/claude-accounts/usage', authenticateAdmin, async (req, res) => {
|
|||||||
account.accessToken &&
|
account.accessToken &&
|
||||||
account.status === 'active'
|
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 {
|
try {
|
||||||
const usageData = await claudeAccountService.fetchOAuthUsage(account.id)
|
const usageData = await claudeAccountService.fetchOAuthUsage(account.id)
|
||||||
if (usageData) {
|
if (usageData) {
|
||||||
|
|||||||
Reference in New Issue
Block a user