Module Limiter_async.Resource_throttle
A resource throttle holds a static list of n
resources that are handed out in a round-robin fashion to up to n
concurrent jobs. A resource given to create
may be re-used many times in the lifetime of t
but will never be used by more than one job at a time.
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a t -> Ppx_sexp_conv_lib.Sexp.t
val create_exn : resources:'a list -> continue_on_error:bool -> ?burst_size:int -> ?sustained_rate_per_sec:float -> unit -> 'a t
val max_concurrent_jobs : _ t -> int
val enqueue_exn : 'a t -> ?allow_immediate_run:bool -> ('a -> unit) -> unit
val enqueue' : 'a t -> ('a -> 'b Async_kernel.Deferred.t) -> 'b Outcome.t Async_kernel.Deferred.t
include Common with type 'a t := 'a t
val kill : _ t -> unit
kills
t
, which aborts all enqueued jobs that haven't started and all jobs enqueued in the future. Ift
has already been killed, then callingkill t
has no effect. Note that kill does not affect currently running jobs in any way.
val is_dead : _ t -> bool
is_dead t
returnstrue
ift
was killed, either bykill
or by an unhandled exception in a job.