Eval: backon as standard retry/backoff utility (replaces ad-hoc retry across products) #65
Labels
No labels
architecture
backlog
enhancement
module:documents
module:hardware
module:manage
module:pipeline
module:voice
priority:backlog
priority:high
priority:medium
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Circuit-Forge/circuitforge-core#65
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Source
https://github.com/Llucs/backon — MIT license
What it is
Pure Python (zero stdlib dependencies), Python 3.10+. Modern evolution of the
backofflibrary with native async/await support and additional resilience primitives.
Wait strategies: exponential, constant, fibonacci, linear, decay, randomized variants,
chainable composition (
wait_chain), full/random/no jitter.API styles (all async-native):
@on_exception,@on_predicateretry()functionRetryingclassRetryingCallerBeyond basic retry:
CF use cases
circuitforge-core (primary)
Add
backonas the standard retry wrapper in cf-core modules that make external calls:llm/module — LLM endpoint calls (cloud tier: Anthropic, local tier: ollama/vllm)affiliates/module — affiliate link resolution/trackingreranker/module — reranker API callsactivitypub/module — federated network callsExpose a thin
circuitforge_core.retrywrapper so products get consistent retrybehavior without importing backon directly.
cf-orch (secondary)
Hedging is particularly interesting for cf-orch worker dispatch:
Per-product use cases (consumed via cf-core)
Current state
Each product handles retry ad-hoc or not at all. Standardizing via cf-core eliminates
duplicated retry logic and ensures consistent backoff behavior across the menagerie.
License
MIT — clean for all CF tiers including commercial/cloud.
Eval steps
conda run -n cf pip install backonand test against cf-core's LLM moduletenacity(current ad-hoc alternative in some products)backonto cf-core dependencies, addcircuitforge_core/retry.pywrapper, update affected modules
Note
Zero-dependency is a meaningful constraint — backon won't pull in transitive packages
that create conflicts across products' conda env.