periodically print shard info

This commit is contained in:
jellywx 2021-09-17 11:14:51 +01:00
parent 8db0a05785
commit 6f86f2afa0

View File

@ -8,7 +8,7 @@ mod framework;
mod guild_data;
mod sound;
use std::{collections::HashMap, env, sync::Arc};
use std::{collections::HashMap, env, sync::Arc, time::Duration};
use dashmap::DashMap;
use dotenv::dotenv;
@ -310,6 +310,29 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
framework_arc.build_slash(&client.cache_and_http.http).await;
let shard_manager = client.shard_manager.clone();
tokio::spawn(async move {
loop {
{
let mut shards = shard_manager
.lock()
.await
.runners
.lock()
.await
.iter()
.map(|(id, shard)| format!("\t{} {}", id.0, shard.stage))
.collect::<Vec<String>>();
shards.sort();
info!("Shard Status: [\n{}\n]", shards.join("\n"));
}
tokio::time::sleep(Duration::from_secs(60)).await;
}
});
if let Ok((Some(lower), Some(upper))) = env::var("SHARD_RANGE").map(|sr| {
let mut split = sr
.split(',')