main.go 2.8 KB

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