Зрелый пул аккаунтов/сессий поверх librarykit: статус-машина аккаунта, quota/подписки, rate-limit + circuit-breaker, OAuth-ротация (single-flight DCL-lock), egress-пул с quarantine, import/export, headless-фасад. Обобщение gemini-balancer в переиспользуемый доменный слой.
Project description
s-accountpoolkit
Зрелый пул аккаунтов/сессий поверх s-librarykit — доменный слой над SessionStore/SessionPool/RateLimiter/RotatingAuth/antibot-транспортами. Обобщение gemini-balancer в переиспользуемый кит.
import-имя accountpoolkit · dist-имя s-accountpoolkit (как s-librarykit → librarykit).
Что даёт (сверх librarykit)
- Account со статус-машиной —
available / cooldown / quota_exhausted / disabled / blockedс причинами и таймстемпами (не строка+is_active). - Quota / подписки —
QuotaDataunion (dual-window weekly+5h / header-based / JWT-claims), приоритетULTRA > PRO > FREE, model-level изоляция. - Rate-limit + circuit-breaker — разбор 429/403/5xx/Retry-After, exp-backoff по причинам, cooldown отдельно от CB-open, авто-recovery.
- Selector — двухслойный (жёсткий eligibility-фильтр → Power-of-Two-Choices), приоритет-каскад подписка→квота→health→reset, sticky-сессии, slow-start.
- OAuth-ротация — single-flight (double-checked-locking) на аккаунт, атомарный rolling-refresh, fallback-цепочка OAuth-клиентов,
invalid_grant→ карантин, проактивный фоновый рефреш, keyring-экспорт токена. - Egress-пул — привязка аккаунт↔прокси (sticky IP) vs глобальный пул, стратегии (RR/Weighted/LeastConn/Priority/P2C), health-check, настоящий per-proxy circuit-breaker/quarantine.
- Import/export — версионированный конверт, идемпотентный upsert, чтение чужих сторов.
- Headless
AccountService-фасад +clikitCLI (json-by-default); опц. REST admin ([rest],accountpoolkit.rest.create_admin_app) + cloudflared quick-tunnel (accountpoolkit.tunnel, нужен бинарьcloudflaredна PATH — не pip-пакет).
Секреты — только через librarykit SessionStore (envelope KEK/DEK) / SecretStore (keyring+fallback). Никакого plaintext.
Провайдер-специфика (gemini / codex / …) — через AccountProvider Protocol-плагины; ядро её не знает.
Установка
uv add s-accountpoolkit # ядро
uv add "s-accountpoolkit[egress]" # + antibot health-транспорт для egress-пула
uv add "s-accountpoolkit[cli]" # + CLI `accountpool` (json-by-default)
import-имя — accountpoolkit. AccountService — headless-фасад над всеми слоями:
import accountpoolkit as apk
from librarykit.sessions import SessionStore
store = apk.AccountStore(SessionStore(root=None, encrypt=True), social="myservice")
pool = apk.AccountPool(store, tracker=apk.RateLimitTracker())
svc = apk.AccountService(store=store, pool=pool)
choice = await svc.acquire(require_tier=apk.SubscriptionTier.PRO)
if choice:
... # запрос через choice.proxy (egress) + choice.account (device);
# секреты хранятся отдельно (envelope): await store.load_creds(choice.ref)
await svc.report(choice.ref, response=resp) # 429/5xx → cooldown/circuit-breaker
Статус
Ядро стабильно: статус-машина аккаунта, quota/подписки, rate-limit + circuit-breaker,
OAuth-ротация (single-flight), egress-пул, import/export, AccountService-фасад + CLI.
Провайдер-плагины подключаются через entry-points accountpoolkit.providers.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file s_accountpoolkit-0.0.3.tar.gz.
File metadata
- Download URL: s_accountpoolkit-0.0.3.tar.gz
- Upload date:
- Size: 136.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13667f8549fca1832ade47bc2c13e4a6bc44aed855f537ee07eef38b9e5e98db
|
|
| MD5 |
bbef571eb410b59cf19d391ce37689d4
|
|
| BLAKE2b-256 |
954e3c31eb9d221b03cf9460c555ffc6a9c3b31490191d5ede007fd00c41a8f1
|
File details
Details for the file s_accountpoolkit-0.0.3-py3-none-any.whl.
File metadata
- Download URL: s_accountpoolkit-0.0.3-py3-none-any.whl
- Upload date:
- Size: 107.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27d3f641e9ddcde496d2514b22d2d42782c23d0461dd15332a955079195d8de0
|
|
| MD5 |
7e5ba4bb59b8cf288b6d9265e638764f
|
|
| BLAKE2b-256 |
943a006c587f3346ae10362a654636b4a3077cef54765f809c791708ca6d0872
|