Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
View this page
Toggle table of contents sidebar

# pyrate_limiter.buckets.in_memory_bucket module

Naive bucket implementation using built-in list

class pyrate_limiter.buckets.in_memory_bucket.InMemoryBucket(rates)

  Bases: `AbstractBucket`

  Simple In-memory Bucket using native list Clock can be either time.time or time.monotonic When leak, clock is required Pros: fast, safe, and precise Cons: since it resides in local memory, the data is not persistent, nor scalable Usecase: small applications, simple logic

  count()

    Count number of items in the bucket

    Return type:

      `int`

  flush()

    Flush the whole bucket - Must remove failing-rate after flushing

    Return type:

      `None`

  items
  leak(current_timestamp=None)

    leaking bucket - removing items that are outdated

    Return type:

      `int`

  peek(index)

    Peek at the rate-item at a specific index in latest-to-earliest order NOTE: The reason we cannot peek from the start of the queue(earliest-to-latest) is we can’t really tell how many outdated items are still in the queue

    Return type:

      `Optional`[`RateItem`]

  put(item)

    Put an item (typically the current time) in the bucket return true if successful, otherwise false

    Return type:

      `bool`