main.go 3.2 KB

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