Module Core_kernel__.Limiter.Throttled_rate_limiter

A Throttled_rate_limiter combines a Token_bucket and a Throttle. Unlike a Token_bucket jobs cannot consume variable numbers of tokens, but the number of outstanding jobs is also limited to max_concurrent_jobs. Like a Throttlefinish_job must be called once, and only once when a job is completed.

type t = private limiter
val create_exn : now:Core_kernel.Time_ns.t ‑> burst_size:Core_kernel__.Import.int ‑> sustained_rate_per_sec:Core_kernel__.Import.float ‑> max_concurrent_jobs:Core_kernel__.Import.int ‑> t
val try_start_job : t ‑> now:Core_kernel.Time_ns.t ‑> [ `Start | `Max_concurrent_jobs_running | `Unable_until_at_least of Core_kernel.Time_ns.t ]
val finish_job : t ‑> now:Core_kernel.Time_ns.t ‑> Core_kernel__.Import.unit