suitkaise
Your function works exactly as before.
But now you have superpowers.
.asynced()
Make it async, automatically
.background()
Run it in a thread, get a Future
.retry(N)
Retry up to N times with backoff
.timeout(N)
Kill it if it takes too long
.rate_limit(N)
Throttle to N calls per second
No rewrites. Just call it differently.
Run anything in the background
Same function definition.
Chain any combination. Order doesn't matter.
Execution order is always consistent:
rate limit → retry → timeout → call
One decorator. Five cool things.
Define once. Modify anywhere. Chain everything.