Python library for efficiently batch-processing workloads asynchronously with batch-size- and time-based flushes.
Project description
Timed Batch Worker
Python library for efficiently batch-processing workloads asynchronously with batch-size- and time-based flushes using short-circuiting events.
Installation
pip install timed-batch-worker
Usage
from timed_batch_worker import TimedBatchWorker
# Handle the batched items
def handle_batch(items):
http.post('/api/logs/bulk', data=items)
# Create a worker that flushes the queue when:
# 1. The batch contains 20 objects, or
# 2. Five seconds have passed since the last flush
worker = TimedBatchWorker(
handler=handle_batch,
flush_interval=5,
flush_batch_size=20,
)
# Worker started in separate thread to avoid throttling main event loop
# in case the batch handler includes synchronous workloads.
worker.start()
# Add objects to the current batch at any time
@app.get('/users/create')
def create_user():
...
# Hand off an object to the worker
worker.enqueue({
'event': 'USER_CREATED',
'data': user
})
...
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for timed_batch_worker-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a1dec99fd51a0d52b7eb166b5d80edfefb1b04c4cb95190779347818d13c352 |
|
MD5 | 88a4aa956ee639761087cd0e4c30d066 |
|
BLAKE2b-256 | 0285ea06cb3c9c2af5218045ac0ad918fc320434a5034d1e5462ca8cb3a4cfdc |