123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package main
- import (
- codegrpc "analysiscode"
- "fmt"
- "io/ioutil"
- mgo "mongodb"
- "os"
- qu "qfw/util"
- "regexp"
- "spider"
- //"qfw/util/redis"
- "runtime"
- . "spiderutil"
- "time"
- "github.com/donnie4w/go-logger/logger"
- "github.com/go-xweb/xweb"
- )
- var timeReg = regexp.MustCompile("[0-9]{4}-[0-9]{2}-[0-9]{2}")
- func init() {
- qu.ReadConfig(&Config)
- //mgo
- spider.MgoE = &mgo.MongodbSim{
- MongodbAddr: Config.Mongodb_spider,
- Size: Config.Editor_dbsize,
- DbName: "editor",
- }
- spider.MgoE.InitPool()
- spider.MgoS = &mgo.MongodbSim{
- MongodbAddr: Config.Mongodb_spider,
- Size: Config.Spider_dbsize,
- DbName: "spider",
- }
- spider.MgoS.InitPool()
- //初始化Redis
- InitRedis(Config.Redisservers)
- //启动消息服务
- spider.InitMsgClient(Config.Msgserveraddr, Config.Msgname)
- spider.InitMsgClientFile(Config.MsgserveraddrFile, Config.Msgname+"file")
- //验证码识别client
- codegrpc.InitCodeGrpcClient()
- //初始化网络存储服务
- OssInit(
- qu.ObjToString(Config.OssInfo["ossEndpoint"]),
- qu.ObjToString(Config.OssInfo["ossAccessKeyId"]),
- qu.ObjToString(Config.OssInfo["ossAccessKeySecret"]),
- qu.ObjToString(Config.OssInfo["ossBucketName"]),
- )
- //logger.SetConsole(false)
- logger.SetRollingDaily("./logs", "spider.log")
- //加载爬虫
- spider.InitLuaCode()
- }
- //
- func main() {
- //定时清理日志
- go clearLogs()
- //初始化爬虫服务
- go spider.InitSpider()
- //清理计数
- go spider.GcCount()
- //内存信息
- go heapprint()
- //查列表页信息采集三级页
- go spider.DetailData()
- //定时任务(现在此任务由编辑器建任务时完成)
- //go spider.TimeTask()
- //批量保存错误数据
- go spider.UpdataErrDataMgo()
- logger.Debug(Config.Webport)
- xweb.Run(":" + Config.Webport)
- }
- func heapprint() {
- var m runtime.MemStats
- runtime.ReadMemStats(&m)
- fmt.Printf("申请内存:%dM,分配内存:%dM,未使用内存:%dM,回收内存:%dM\n", m.HeapSys/(1024*1024), m.HeapAlloc/(1024*1024),
- m.HeapIdle/(1024*1024), m.HeapReleased/(1024*1024))
- time.AfterFunc(1*time.Minute, heapprint)
- }
- func clearLogs() {
- fmt.Println("=======clearLogs========")
- timeInt := time.Now().AddDate(0, 0, -30).Unix()
- dirs, err := ioutil.ReadDir("./logs")
- if err == nil {
- for _, f := range dirs {
- fname := f.Name()
- logTimeStr := timeReg.FindString(fname)
- if logTimeStr == "" {
- continue
- }
- logTimeInt, _ := time.ParseInLocation("2006-01-02", logTimeStr, time.Local)
- if logTimeInt.Unix() < timeInt {
- os.Remove("./logs/" + fname)
- }
- }
- }
- time.AfterFunc(24*time.Hour, clearLogs)
- }
|