batched
Rust macro utility for batching expensive async operations.
Installation
Or add this to your Cargo.toml:
[]
= "0.1.0"
#[batched]
- window: Minimum amount of time (in milliseconds) the background thread waits before processing a batch.
- limit: Maximum amount of items that can be grouped and processed in a single batch.
- concurrent: Maximum amount of concurrent batched tasks running (default:
Infinity)
The target function must have a single argument, a vector of items (Vec<T>). The return value (must implement Clone) is propagated to all async calls made for the batch items.
If the target function returns a Result<T, E>, the generics must implement Clone or the return must wrapped in Arc<T>.
Prerequisites
- Built for async environments (tokio), will not work without a tokio async runtime
- Not supported inside structs
;
Examples
Batch insert Postgres rows
use batched;
// Creates functions [`insert_message`] and [`insert_message_multiple`]
async
async
async