智慧食堂
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

60 rader
1.2 KiB

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