ExternalService.RateLimiter.Local (ExternalService v2.3.0)

Copy Markdown View Source

The default rate limiter backend: a node-local token bucket.

You get this without configuring anything. It allows a burst of up to :limit calls and then paces the rest at one call per :per / :limit, refilling one call at a time rather than handing out a fresh full burst at each window boundary.

It is node-local: counters live in this node's memory, so N nodes running the same service each enforce the limit separately and the external service can see up to N times the configured rate. For a limit shared across a cluster, use ExternalService.RateLimiter.Hammer.

State is a single :atomics slot per service, so this backend needs no owning process, no supervision tree, and no dependency.