프로바이더별 동시 실행 제한 세마포어 (SPEC §5).
에이전트 50개가 같은 LLM API를 동시에 때리는 상황의 필수 장치. 보유자(holder)를 모니터링해 프로세스가 죽으면 슬롯을 자동 회수한다 — 누수 없음. 프로세스당 슬롯 1개 (재진입 불가).
children = [{ElGraph.RateLimiter, limit: 5, name: MyApp.OpenAILimiter}]
ElGraph.RateLimiter.with_limit(MyApp.OpenAILimiter, fn -> OpenAI.chat(...) end)
Summary
Functions
슬롯을 획득한다. 빈 슬롯이 없으면 대기한다.
Returns a specification to start this module under a supervisor.
슬롯을 반환한다.
슬롯 안에서 함수를 실행한다. 예외가 나도 슬롯은 반환된다.
Functions
@spec acquire(GenServer.server(), timeout()) :: :ok
슬롯을 획득한다. 빈 슬롯이 없으면 대기한다.
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec release(GenServer.server()) :: :ok
슬롯을 반환한다.
@spec with_limit(GenServer.server(), (-> result)) :: result when result: term()
슬롯 안에서 함수를 실행한다. 예외가 나도 슬롯은 반환된다.