main.rs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. mod json_db_utils;
  2. mod control_c;
  3. mod server;
  4. mod listener_tools;
  5. mod bitget_usdt_swap_data_listener;
  6. mod gate_usdt_swap_data_listener;
  7. mod binance_usdt_swap_data_listener;
  8. mod coinex_usdt_swap_data_listener;
  9. mod htx_usdt_swap_data_listener;
  10. mod bingx_usdt_swap_data_listener;
  11. mod mexc_usdt_swap_data_listener;
  12. mod okx_usdt_swap_data_listener;
  13. mod bitmart_usdt_swap_data_listener;
  14. mod kucoin_usdt_swap_data_listener;
  15. mod coinsph_usdt_swap_data_listener;
  16. mod phemex_usdt_swap_data_listener;
  17. mod woo_usdt_swap_data_listener;
  18. mod cointr_usdt_swap_data_listener;
  19. use std::sync::Arc;
  20. use std::sync::atomic::{AtomicBool, Ordering};
  21. use std::time::Duration;
  22. use tracing::{info, warn};
  23. use tracing_appender_timezone::non_blocking::WorkerGuard;
  24. // 日志级别配置
  25. fn log_level_init(log_str: String, port: u32, app_name: String) -> WorkerGuard {
  26. info!("日志级别读取成功:{}。", log_str);
  27. global::log_utils::final_init(log_str.as_str(), port, app_name)
  28. }
  29. #[tokio::main(flavor = "multi_thread")]
  30. async fn main() {
  31. // 日志级别配置
  32. let _ = log_level_init("info".to_string(), 8888, "data-center".to_string());
  33. // 掌控全局的关闭
  34. let running = Arc::new(AtomicBool::new(true));
  35. // 初始化数据服务器
  36. server::run_server(8888, running.clone());
  37. // ctrl c退出检查程序
  38. control_c::exit_handler(running.clone());
  39. // 启动各交易所的数据监听器
  40. // bitget_usdt_swap_data_listener::run_listener(running.clone()).await;
  41. // okx_usdt_swap_data_listener::run_listener(running.clone()).await;
  42. // mexc_usdt_swap_data_listener::run_listener(running.clone()).await;
  43. // kucoin_usdt_swap_data_listener::run_listener(running.clone()).await;
  44. // bitmart_usdt_swap_data_listener::run_listener(running.clone()).await;
  45. // bingx_usdt_swap_data_listener::run_listener(running.clone()).await;
  46. // coinsph_usdt_swap_data_listener::run_listener(running.clone()).await;
  47. binance_usdt_swap_data_listener::run_listener(running.clone()).await;
  48. gate_usdt_swap_data_listener::run_listener(running.clone()).await;
  49. coinex_usdt_swap_data_listener::run_listener(running.clone()).await;
  50. htx_usdt_swap_data_listener::run_listener(running.clone()).await;
  51. phemex_usdt_swap_data_listener::run_listener(running.clone()).await;
  52. woo_usdt_swap_data_listener::run_listener(running.clone()).await;
  53. cointr_usdt_swap_data_listener::run_listener(running.clone()).await;
  54. // panic错误捕获,panic级别的错误直接退出
  55. // let panic_running = running.clone();
  56. std::panic::set_hook(Box::new(move |panic_info| {
  57. let msg = format!("type=panic, msg={:?}, location={:?}", panic_info.to_string(), panic_info.location());
  58. warn!("{}", msg);
  59. // panic_running.store(false, Ordering::Relaxed);
  60. }));
  61. // 每一秒检查一次程序是否结束
  62. while running.load(Ordering::Relaxed) {
  63. tokio::time::sleep(Duration::from_secs(1)).await;
  64. }
  65. }