SlidingWindowLimiter Type
Sliding-window rate limiter. Tracks request count within a time window. Thread-safe on .NET; single-threaded safe on Fable.
Example
let limiter = SlidingWindowLimiter(100, TimeSpan.FromMinutes 1.)
match limiter.TryAcquire() with
| Ok () -> processRequest()
| Error waitTime -> rejectWith429 waitTime
val limiter: obj
union case Result.Ok: ResultValue: 'T -> Result<'T,'TError>
union case Result.Error: ErrorValue: 'TError -> Result<'T,'TError>
val waitTime: obj
Constructors
| Constructor |
Description
|
Full Usage:
SlidingWindowLimiter(maxRequests, window)
Parameters:
int
window : TimeSpan
Returns: SlidingWindowLimiter
|
Creates a limiter using the system clock.
|
Full Usage:
SlidingWindowLimiter(maxRequests, window, clock)
Parameters: Returns: SlidingWindowLimiter
|
|
Instance members
| Instance member |
Description
|
Full Usage:
this.Count
Returns: int
|
Current number of requests in the active window.
|
Full Usage:
this.MaxRequests
Returns: int
|
Maximum requests allowed per window.
|
Full Usage:
this.Reset
|
Reset the limiter to initial state. Thread-safe. |
|
|
|
Window duration.
|
TDesu.FSharp