View Source Finitomata.Throttler (Finitomata v0.17.0)
The internal definition of the call to throttle.
Finitomata.Throttler.call/3
is a blocking call similar to GenServer.call/3
, but
served by the underlying GenStage
producer-consumer pair.
Despite this implementation of throttling based on GenStage
is provided
mostly for internal needs, it is generic enough to use wherever. Use the childspec
{Finitomata.Throttler, name: name, initial: [], max_demand: 3, interval: 1_000}
to start a throttling process and Finitomata.Throttler.call/3
to perform throttled
synchronous calls from different processes.
Summary
Types
The in/out parameter for calls to Finitomata.Throttler.call/3
The simplified in parameter for calls to Finitomata.Throttler.call/3
Types
@type t() :: %Finitomata.Throttler{ from: GenServer.from(), fun: (keyword() -> any()), args: keyword(), result: any(), duration: pos_integer(), payload: any() }
The in/out parameter for calls to Finitomata.Throttler.call/3
The simplified in parameter for calls to Finitomata.Throttler.call/3
Functions
Synchronously executes the function, using throttling based on GenStage
.
This function has a default timeout :infinity
because of its nature
(throttling is supposed to take a while,) but it might be passed as the third
argument in a call to call/3
.
If a list of functions is given, executes all of them in parallel, collects the results, and then returns them to the caller.
The function might be given as Finitomata.Throttler.t/0
or
in a simplified form as {function_of_arity_1, arg}
.
Returns a specification to start this module under a supervisor.
See Supervisor
.
Starts the throttler with the underlying producer-consumer stages.
Accepted options are: