Skip to main content

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

timed-batch-worker-0.0.5.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

timed_batch_worker-0.0.5-py3-none-any.whl (4.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page