2026-02-13 13:28:40 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from src.models.database import ProviderAPIKey
|
2026-03-07 02:16:03 +08:00
|
|
|
from src.services.provider_keys.quota_reader import get_quota_reader
|
2026-02-13 13:28:40 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def is_key_quota_exhausted(
|
|
|
|
|
provider_type: str | None,
|
|
|
|
|
key: ProviderAPIKey,
|
|
|
|
|
*,
|
|
|
|
|
model_name: str,
|
|
|
|
|
) -> tuple[bool, str | None]:
|
2026-03-07 02:16:03 +08:00
|
|
|
"""Check ProviderAPIKey.upstream_metadata quota and decide whether to skip."""
|
2026-02-13 13:28:40 +08:00
|
|
|
|
2026-03-07 02:16:03 +08:00
|
|
|
reader = get_quota_reader(provider_type, getattr(key, "upstream_metadata", None))
|
|
|
|
|
result = reader.is_exhausted(model_name)
|
|
|
|
|
return result.exhausted, result.reason
|