main.rs 3.0 KB

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