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 Throttle
,
finish_job
must be called once, and only once, when a job is completed.
val create_exn : now: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 finish_job : t ‑> now:Time_ns.t ‑> Core_kernel__.Import.unit