Add more logging to the token pool

This commit is contained in:
Zed 2022-06-05 21:47:25 +02:00
parent 138826fb4f
commit adaa94d998

View file

@ -14,6 +14,10 @@ var
clientPool: HttpPool
tokenPool: seq[Token]
lastFailed: Time
enableLogging = false
template log(str) =
if enableLogging: echo "[tokens] ", str
proc getPoolJson*(): JsonNode =
var
@ -77,8 +81,10 @@ proc fetchToken(): Future[Token] {.async.} =
return Token(tok: tok, init: time, lastUse: time)
except Exception as e:
echo "[tokens] fetching token failed: ", e.msg
if "Try again" notin e.msg:
echo "[tokens] fetching tokens paused, resuming in 30 minutes"
lastFailed = getTime()
echo "fetching token failed: ", e.msg
proc expired(token: Token): bool =
let time = getTime()
@ -100,6 +106,9 @@ proc isReady(token: Token; api: Api): bool =
proc release*(token: Token; used=false; invalid=false) =
if token.isNil: return
if invalid or token.expired:
if invalid: log "discarding invalid token"
elif token.expired: log "discarding expired token"
let idx = tokenPool.find(token)
if idx > -1: tokenPool.delete(idx)
elif used:
@ -115,6 +124,7 @@ proc getToken*(api: Api): Future[Token] {.async.} =
if not result.isReady(api):
release(result)
result = await fetchToken()
log "added new token to pool"
tokenPool.add result
if not result.isNil:
@ -143,10 +153,12 @@ proc poolTokens*(amount: int) {.async.} =
except: discard
if not newToken.isNil:
log "added new token to pool"
tokenPool.add newToken
proc initTokenPool*(cfg: Config) {.async.} =
clientPool = HttpPool()
enableLogging = cfg.enableDebug
while true:
if tokenPool.countIt(not it.isLimited(Api.timeline)) < cfg.minTokens: