pub struct ModelRateLimiter {
pub model_id: String,
pub total_throttled: AtomicU64,
/* private fields */
}Expand description
Combined rate limiter for a single model.
Checks both the token bucket and the sliding window on every call to
ModelRateLimiter::check_and_consume.
Fields§
§model_id: StringModel identifier.
total_throttled: AtomicU64Cumulative count of requests that were throttled (either limiter).
Implementations§
Source§impl ModelRateLimiter
impl ModelRateLimiter
Sourcepub fn new(model_id: String, config: &RateLimiterConfig) -> Self
pub fn new(model_id: String, config: &RateLimiterConfig) -> Self
Create a limiter from a RateLimiterConfig.
Sourcepub fn check_and_consume(&self, tokens: u64) -> Result<(), RateLimitError>
pub fn check_and_consume(&self, tokens: u64) -> Result<(), RateLimitError>
Check whether a request consuming tokens may proceed.
On success, the tokens are deducted from the bucket and the request is
recorded in the sliding window. On failure, total_throttled is
incremented and the appropriate RateLimitError is returned.
Auto Trait Implementations§
impl !Freeze for ModelRateLimiter
impl RefUnwindSafe for ModelRateLimiter
impl Send for ModelRateLimiter
impl Sync for ModelRateLimiter
impl Unpin for ModelRateLimiter
impl UnsafeUnpin for ModelRateLimiter
impl UnwindSafe for ModelRateLimiter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request