智盟项目
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 년 전
5 달 전
1 년 전
1 년 전
1 년 전
1 년 전
5 달 전
1 년 전
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "log"
  6. "net/http"
  7. "os"
  8. "os/signal"
  9. "syscall"
  10. "time"
  11. "applet/app/cfg"
  12. "applet/app/db"
  13. "applet/app/router"
  14. )
  15. // 系统初始化
  16. func init() {
  17. cfg.InitCfg() //配置初始化
  18. cfg.InitLog() //日志初始化
  19. cfg.InitCache() //缓存初始化
  20. cfg.InitEs() //ElasticSearch初始化
  21. if cfg.Debug { //判断是否是debug
  22. if err := db.InitDB(cfg.DB); err != nil { //主数据库初始化
  23. panic(err)
  24. }
  25. if err := db.InitZhimengDB(cfg.ZhimengDB); err != nil {
  26. panic(err)
  27. }
  28. channel := make(chan int, 0) //开辟管道,缓冲为
  29. go db.InitDBs(channel)
  30. <-channel
  31. }
  32. fmt.Println("init success")
  33. }
  34. func main() {
  35. r := router.Init() //创建路由
  36. srv := &http.Server{ //设置http服务参数
  37. Addr: cfg.SrvAddr, //指定ip和端口
  38. Handler: r, //指定路由
  39. }
  40. go func() { //协程启动监听http服务
  41. fmt.Println("Listening and serving HTTP on " + cfg.SrvAddr)
  42. if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  43. log.Fatalf("listen: %s\n", err)
  44. }
  45. }()
  46. //退出go守护进程
  47. quit := make(chan os.Signal)
  48. signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
  49. <-quit
  50. log.Println("Shutting down server...")
  51. ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
  52. defer cancel()
  53. if err := srv.Shutdown(ctx); err != nil {
  54. log.Fatal("Server forced to shutdown:", err)
  55. }
  56. log.Println("Server exiting")
  57. }