Mirror of https://github.com/roostorg/osprey
github.com/roostorg/osprey
1use crate::priority_queue::{PriorityQueueReceiver, PriorityQueueSender};
2use crate::signals;
3
4pub fn spawn_shutdown_handler(
5 priority_queue_sender: PriorityQueueSender,
6 priority_queue_receiver: PriorityQueueReceiver,
7) {
8 tokio::spawn(async move {
9 tracing::info!("shutdown handler spawned - waiting on exit signal");
10 signals::exit_signal().await;
11 tracing::info!("got exit signal");
12 priority_queue_receiver.nack_all_async();
13 tracing::info!("nacked all outstanding async actions");
14 tokio::time::sleep(tokio::time::Duration::from_secs(15)).await;
15 priority_queue_sender.close();
16 tracing::info!("closed priority queue");
17 });
18}