| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- mod json_db_utils;
- mod control_c;
- mod server;
- mod listener_tools;
- mod binance_usdt_swap_data_listener;
- mod gate_usdt_swap_data_listener;
- mod coinex_usdt_swap_data_listener;
- mod msv;
- mod rank;
- use std::sync::Arc;
- use std::sync::atomic::{AtomicBool, Ordering};
- use std::time::Duration;
- use tracing::{info, warn};
- use tracing_appender_timezone::non_blocking::WorkerGuard;
- // 日志级别配置
- fn log_level_init(log_str: String, port: u32, app_name: String) -> WorkerGuard {
- info!("日志级别读取成功:{}。", log_str);
- global::log_utils::final_init(log_str.as_str(), port, app_name)
- }
- #[tokio::main(flavor = "multi_thread")]
- async fn main() {
- // 日志级别配置
- let _ = log_level_init("info".to_string(), 28888, "micro_rank".to_string());
- // 掌控全局的关闭
- let running = Arc::new(AtomicBool::new(true));
- // 初始化数据服务器
- server::run_server(28888, running.clone());
- // ctrl c退出检查程序
- control_c::exit_handler(running.clone());
- // 启动各交易所的数据监听器
- binance_usdt_swap_data_listener::run_listener(running.clone()).await;
- gate_usdt_swap_data_listener::run_listener(running.clone()).await;
- coinex_usdt_swap_data_listener::run_listener(running.clone()).await;
- // panic错误捕获,panic级别的错误直接退出
- // let panic_running = running.clone();
- std::panic::set_hook(Box::new(move |panic_info| {
- let msg = format!("type=panic, msg={:?}, location={:?}", panic_info.to_string(), panic_info.location());
- warn!("{}", msg);
- // panic_running.store(false, Ordering::Relaxed);
- }));
- // 每一秒检查一次程序是否结束
- while running.load(Ordering::Relaxed) {
- tokio::time::sleep(Duration::from_secs(1)).await;
- }
- }
|