Skip to content

mike-huls/buffr

Repository files navigation

   ___  __  _____________ 
  / _ )/ / / / __/ __/ _ \
 / _  / /_/ / _// _// , _/
/____/\____/_/ /_/ /_/|_| 

coverage Tests version dependencies PyPI Downloads versions
tweet xfollow

buffr: simple buffering mechanism for Python

buffr provides a simple mechanism that allows you to collect values in a buffer. Once a certain time has passed or the buffer's capacity is reached, all values will pe processed with the provided function. As an analogy: don't process each drop, wait till the bucket is full and process that.

pip install buffr

Table of Contents

Main Features

  • 🐍 Pure Python
  • 🖌 Easily configurable
  • 👨‍🎨 User-friendly

Use case

You listen to a queue for messages that you'll process and insert into the database. If we receive a message each second, this means that we have to perform an insert 60 times a second.

In this case we could use Buffr to collect messages for 30 seconds before batch inserting them. This reduces the number of costly database-operations from 60 per minute to just 2.

Usage Example

Creating a Buffr is easy.

from typing import List
from buffr import Buffr

# Define the processor
def processing_fn(items:List):
    for item in items:
        print(item * 2)

# Create a buffr
buffr = Buffr(max_capacity=100, buffer_ttl=30, flush_func=processing_fn)

# Add some values to the Buffr
for i in range(4):
    buffr.add(i)

The Buffr defined above will flush in three cases:

  1. the capacity of 100 items is exceeded
  2. 30 seconds pass (buffr_ttl)
  3. buffr.flush() is called

Installation

pip install buffr

The source code is currently hosted on GitHub at: https://github.com/mike-huls/buffr

Binary installers for the latest released version are available at the Python Package Index (PyPI).

Dependencies

Buffr has no dependencies

License

MIT

Documentation

🔨 Under construction

Development

Find the changelog and list of upcoming features here.
Contributions are always welcome; feel free to submit bug reports, bug fixes, feature requests, documentation improvements or enhancements!


Go to Top

About

Python buffering package

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages