Expand description
Core scheduling primitives for Firq.
firq-core is runtime-agnostic and contains the scheduling engine used by
the async and web integration crates.
It provides:
- Deficit Round Robin (DRR) fairness by tenant
- Global/per-tenant backpressure policies
- Deadline-aware dequeue semantics
- Queue-time metrics and saturation signals
- Prometheus text rendering helpers (
metricsfeature, enabled by default) - Pending task cancellation and shutdown modes
§Basic usage
use firq_core::{EnqueueResult, Priority, Scheduler, SchedulerConfig, Task, TenantKey};
use std::time::Instant;
let scheduler = Scheduler::new(SchedulerConfig::default());
let tenant = TenantKey::from(1);
let task = Task {
payload: "work",
enqueue_ts: Instant::now(),
deadline: None,
priority: Priority::Normal,
cost: 1,
};
match scheduler.enqueue(tenant, task) {
EnqueueResult::Enqueued => {}
EnqueueResult::Rejected(_) => {}
EnqueueResult::Closed => {}
}Modules§
Structs§
- Queue
Time Bucket - Single histogram bucket for queue time metrics.
- Scheduler
- Multi-tenant in-process scheduler with DRR fairness and explicit backpressure.
- Scheduler
Config - Scheduler runtime configuration.
- Scheduler
Stats - Snapshot of scheduler metrics.
- Task
- Enqueued unit of work.
- Task
Handle - Opaque identifier for a pending task.
- Tenant
Count - Tenant counter entry used in top-talker snapshots.
- Tenant
Key - Stable fairness key used to assign work to shards and DRR queues.
Enums§
- Backpressure
Policy - Behavior when enqueue capacity limits are hit.
- Cancel
Result - Result of task cancellation.
- Close
Mode - Scheduler shutdown mode.
- Dequeue
Result - Result of a dequeue attempt.
- Enqueue
Reject Reason - Reason for enqueue rejection.
- Enqueue
Result - Result of an enqueue operation.
- Enqueue
With Handle Result - Result of
enqueue_with_handle. - Priority
- Scheduling priority for a task.