Crates.io | benjamin_batchly |
lib.rs | benjamin_batchly |
version | 0.1.2 |
source | src |
created_at | 2022-06-04 16:09:04.361992 |
updated_at | 2024-06-28 08:18:58.595063 |
description | Low latency batching tool. Bundle lots of single concurrent operations into sequential batches of work. |
homepage | |
repository | https://github.com/alexheretic/benjamin-batchly |
max_upload_size | |
id | 599763 |
size | 34,206 |
Low latency batching tool. Bundle lots of single concurrent operations into sequential batches of work.
use benjamin_batchly::{BatchMutex, BatchResult};
let batcher = BatchMutex::default();
// BatchMutex synchronizes so only one `Work` happens at a time (for a given batch_key).
// All concurrent submissions made while an existing `Work` is being processed will
// await completion and form the next `Work` batch.
match batcher.submit(batch_key, item).await {
BatchResult::Work(mut batch) => {
db_bulk_insert(&batch.items).await?;
batch.notify_all_done();
Ok(())
}
BatchResult::Done(_) => Ok(()),
BatchResult::Failed => Err("failed"),
}