main.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package main
  2. import (
  3. codegrpc "analysiscode"
  4. "fmt"
  5. "io/ioutil"
  6. mgo "mongodb"
  7. "os"
  8. qu "qfw/util"
  9. "regexp"
  10. "spider"
  11. //"qfw/util/redis"
  12. "runtime"
  13. . "spiderutil"
  14. "time"
  15. "github.com/donnie4w/go-logger/logger"
  16. "github.com/go-xweb/xweb"
  17. )
  18. var timeReg = regexp.MustCompile("[0-9]{4}-[0-9]{2}-[0-9]{2}")
  19. func init() {
  20. qu.ReadConfig(&Config)
  21. //mgo
  22. spider.MgoE = &mgo.MongodbSim{
  23. MongodbAddr: Config.Mongodb_spider,
  24. Size: Config.Editor_dbsize,
  25. DbName: "editor",
  26. }
  27. spider.MgoE.InitPool()
  28. spider.MgoS = &mgo.MongodbSim{
  29. MongodbAddr: Config.Mongodb_spider,
  30. Size: Config.Spider_dbsize,
  31. DbName: "spider",
  32. }
  33. spider.MgoS.InitPool()
  34. //初始化Redis
  35. InitRedis(Config.Redisservers)
  36. //启动消息服务
  37. spider.InitMsgClient(Config.Msgserveraddr, Config.Msgname)
  38. spider.InitMsgClientFile(Config.MsgserveraddrFile, Config.Msgname+"file")
  39. //验证码识别client
  40. codegrpc.InitCodeGrpcClient()
  41. //初始化网络存储服务
  42. OssInit(
  43. qu.ObjToString(Config.OssInfo["ossEndpoint"]),
  44. qu.ObjToString(Config.OssInfo["ossAccessKeyId"]),
  45. qu.ObjToString(Config.OssInfo["ossAccessKeySecret"]),
  46. qu.ObjToString(Config.OssInfo["ossBucketName"]),
  47. )
  48. //logger.SetConsole(false)
  49. logger.SetRollingDaily("./logs", "spider.log")
  50. //加载爬虫
  51. spider.InitLuaCode()
  52. }
  53. //
  54. func main() {
  55. //定时清理日志
  56. go clearLogs()
  57. //初始化爬虫服务
  58. go spider.InitSpider()
  59. //清理计数
  60. go spider.GcCount()
  61. //内存信息
  62. go heapprint()
  63. //查列表页信息采集三级页
  64. go spider.DetailData()
  65. //定时任务(现在此任务由编辑器建任务时完成)
  66. //go spider.TimeTask()
  67. //批量保存错误数据
  68. go spider.UpdataErrDataMgo()
  69. logger.Debug(Config.Webport)
  70. xweb.Run(":" + Config.Webport)
  71. }
  72. func heapprint() {
  73. var m runtime.MemStats
  74. runtime.ReadMemStats(&m)
  75. fmt.Printf("申请内存:%dM,分配内存:%dM,未使用内存:%dM,回收内存:%dM\n", m.HeapSys/(1024*1024), m.HeapAlloc/(1024*1024),
  76. m.HeapIdle/(1024*1024), m.HeapReleased/(1024*1024))
  77. time.AfterFunc(1*time.Minute, heapprint)
  78. }
  79. func clearLogs() {
  80. fmt.Println("=======clearLogs========")
  81. timeInt := time.Now().AddDate(0, 0, -30).Unix()
  82. dirs, err := ioutil.ReadDir("./logs")
  83. if err == nil {
  84. for _, f := range dirs {
  85. fname := f.Name()
  86. logTimeStr := timeReg.FindString(fname)
  87. if logTimeStr == "" {
  88. continue
  89. }
  90. logTimeInt, _ := time.ParseInLocation("2006-01-02", logTimeStr, time.Local)
  91. if logTimeInt.Unix() < timeInt {
  92. os.Remove("./logs/" + fname)
  93. }
  94. }
  95. }
  96. time.AfterFunc(24*time.Hour, clearLogs)
  97. }