f_limit library

A Dart implementation of p-limit for controlling concurrency

This library provides utilities to limit the number of concurrent async operations. It's useful for controlling resource usage and preventing overwhelming external services.

Features:

  • Concurrency limiting with configurable limits
  • Multiple queue strategies: FIFO, LIFO, Priority, Alternating, Random
  • Task cancellation support via TaskHandle
  • Timeout support for individual tasks
  • Retry policies with exponential backoff and jitter
  • Pause/resume functionality
  • Isolate support for CPU-intensive tasks
  • Extension methods for concurrent mapping, filtering, and iteration

Classes

FLimit
A concurrency limiter that controls how many async operations can run simultaneously
LimitOptions
Options for creating a limited function
RetryExponential
Exponential backoff retry policy: delay increases exponentially with each attempt
RetryFixed
Fixed delay retry policy: retry with a constant delay between attempts
RetryPolicy
Abstract interface for retry policies
RetrySimple
Simple retry policy: retry up to a maximum number of attempts with no delay
RetryWithJitter
Decorator that adds random jitter to any retry policy
SettledResult<T>
Settled outcome for a task in batch APIs.
TaskHandle<T>
Task handle for controlling and monitoring a submitted task
TaskTimeouts
Timeout configuration for a task.

Enums

QueueStrategy
Queue strategy for task execution
TaskStatus
Execution state for a submitted task.
TimeoutStage
Timeout phases supported by TaskTimeouts.

Extensions

FLimitExtensions on FLimit
Extension methods for FLimit
FLimitIsolate on FLimit
Extension on FLimit to support running tasks in a separate isolate

Functions

executeWithRetry<T>(Future<T> function(), RetryPolicy retryPolicy) Future<T>
Helper function to execute a function with a retry policy.
fLimit(int concurrency, {QueueStrategy queueStrategy = QueueStrategy.fifo}) FLimit
Create a concurrency limiter
limitFunction<T>(Future<T> function(), LimitOptions options) LimitedFunctionWrapper<T>
Create a limited version of a function

Typedefs

LimitedFunction<T> = Future<T> Function()
A function that takes no arguments and returns a Future
LimitedFunctionWrapper<T> = Future<T> Function()
Create a function with limited concurrency

Exceptions / Errors

CanceledException
Exception thrown when a task is canceled before execution
TimeoutException
Exception thrown when a task exceeds its timeout duration