pub struct WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>where
W: Workflow<C, WorkItem: 'static>,
C: Context + Merge + Default,
Q: WorkQueue<C, W::WorkItem> + Send + Sync,
RIS: RunInfoStore + Send + Sync,
MS: MetricsStore + Send + Sync,
ES: ErrorStore + Send + Sync,
LS: LivenessStore + Send + Sync,
WISS: WorkItemStateStore<W::WorkItem> + Send + Sync,
CS: ContextStore<C> + Send + Sync + Clone + 'static,{ /* private fields */ }Expand description
A pool of distributed workflow workers, each running in its own async task.
The pool manages worker lifecycles, graceful shutdown, and health reporting.
Implementations§
Source§impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>where
W: Workflow<C, WorkItem: 'static> + 'static,
C: Context + Merge + Default + 'static,
Q: WorkQueue<C, W::WorkItem> + Send + Sync + Clone + 'static,
RIS: RunInfoStore + Send + Sync + Clone + 'static,
MS: MetricsStore + Send + Sync + Clone + 'static,
ES: ErrorStore + Send + Sync + Clone + 'static,
LS: LivenessStore + Send + Sync + Clone + 'static,
WISS: WorkItemStateStore<W::WorkItem> + Send + Sync + Clone + 'static,
CS: ContextStore<C> + Send + Sync + Clone + 'static,
impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>where
W: Workflow<C, WorkItem: 'static> + 'static,
C: Context + Merge + Default + 'static,
Q: WorkQueue<C, W::WorkItem> + Send + Sync + Clone + 'static,
RIS: RunInfoStore + Send + Sync + Clone + 'static,
MS: MetricsStore + Send + Sync + Clone + 'static,
ES: ErrorStore + Send + Sync + Clone + 'static,
LS: LivenessStore + Send + Sync + Clone + 'static,
WISS: WorkItemStateStore<W::WorkItem> + Send + Sync + Clone + 'static,
CS: ContextStore<C> + Send + Sync + Clone + 'static,
Sourcepub fn new(
worker: DistributedWorker<W, C, Q, RIS, MS, ES, LS, WISS, CS>,
num_workers: usize,
) -> Self
pub fn new( worker: DistributedWorker<W, C, Q, RIS, MS, ES, LS, WISS, CS>, num_workers: usize, ) -> Self
Create a new worker pool with the given worker and number of workers.
Sourcepub async fn stop(&mut self)
pub async fn stop(&mut self)
Gracefully stop all workers by signalling cancellation and waiting for them to finish.
Sourcepub async fn health(&self) -> Vec<WorkerHealth>
pub async fn health(&self) -> Vec<WorkerHealth>
Get health/status of all workers from the liveness store.
Auto Trait Implementations§
impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> Freeze for WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>
impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> RefUnwindSafe for WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>where
W: RefUnwindSafe,
Q: RefUnwindSafe,
CS: RefUnwindSafe,
RIS: RefUnwindSafe,
MS: RefUnwindSafe,
ES: RefUnwindSafe,
LS: RefUnwindSafe,
WISS: RefUnwindSafe,
C: RefUnwindSafe,
impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> Send for WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>
impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> Sync for WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>
impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> Unpin for WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>
impl<W, C, Q, RIS, MS, ES, LS, WISS, CS> UnwindSafe for WorkerPool<W, C, Q, RIS, MS, ES, LS, WISS, CS>where
W: UnwindSafe,
Q: UnwindSafe,
CS: UnwindSafe,
RIS: UnwindSafe,
MS: UnwindSafe,
ES: UnwindSafe,
LS: UnwindSafe,
WISS: UnwindSafe,
C: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more