fengweiqiang 5 年 前
コミット
26f1678f06

+ 7 - 2
udp_ocr_conter/config.json

@@ -14,11 +14,16 @@
   "broadcast_ips": "127.0.0.1;192.168.1.2;192.168.1.3;192.168.1.4",
   "broadcast_port": 1490,
   "http_port": "12345",
-  "cornstr": "0 0 0 1 1 ? ",
-  "corntime_consuming": 300,
+  "cornstr": "0 0 0 1 1 ?",
+  "corntime_consuming": 9000,
   "pernum": 5,
   "time_consuming_limit": 60,
   "accumulated_task_lowlimit": 1000,
+  "swa":119,
+  "swb":112,
+  "xwa":114,
+  "xwb":117,
+  "gdts": 113,
   "esconfig": {
     "available": true,
     "AccessID": "LTAIkuomMLAjIlGH",

+ 47 - 2
udp_ocr_conter/main.go

@@ -6,15 +6,16 @@ import (
 	"corntask"
 	"encoding/json"
 	"fmt"
-	"github.com/cron"
 	"gopkg.in/mgo.v2/bson"
 	"html/template"
 	"info"
+	"io/ioutil"
 	"log"
 	"math"
 	mu "mfw/util"
 	"net"
 	"net/http"
+	"qfw/common/src/github.com/robfig/cron"
 	qu "qfw/util"
 	"qfw/util/mongodb"
 	"regexp"
@@ -172,8 +173,52 @@ func main() {
 	})
 	c := cron.New()
 	spec := qu.ObjToString(config.Sysconfig["cornstr"])
-	c.AddFunc(spec, corntask.Auto)
 	c.Start()
+	c.AddFunc(spec, corntask.Auto)
+	c.AddFunc("0 0 6 1/1 * ?", func() {
+		config.Isjjr = true
+		nowtime := time.Now().Format("20060102")
+		r,err  := http.Get("http://tool.bitefu.net/jiari/?d=" + nowtime + "&back=json")
+		defer r.Body.Close()
+		if err != nil{
+			log.Println("tool.bitefu.net/jiari/",err)
+			config.Isjjr = false
+		}
+		data,err := ioutil.ReadAll(r.Body)
+		if err != nil {
+			log.Println(191,err)
+			config.Isjjr = false
+		}
+		tmp := map[string]interface{}{}
+		json.Unmarshal(data,&tmp)
+		if tmp[nowtime] == 0 || tmp[nowtime] =="0"{
+			config.Isjjr = false
+		}
+		r2, err := http.Get("http://api.goseek.cn/Tools/holiday?date=" + nowtime)
+		defer r2.Body.Close()
+		if err != nil{
+			log.Println("http://api.goseek.cn/Tools/holiday",err)
+			config.Isjjr = false
+		}
+		data2 ,err := ioutil.ReadAll(r2.Body)
+		if err != nil {
+			log.Println(208,err)
+			config.Isjjr = false
+		}
+		tmp2 := map[string]interface{}{}
+		json.Unmarshal(data2,&tmp2)
+		if tmp2["data"] == 0 || tmp2["data"] == "0"|| tmp2["data"] == 2 || tmp2["data"] == "2"{
+			config.Isjjr = false
+		}
+
+	})
+	c.AddFunc("0 */1 * * * *", func() {
+		qu.ReadConfig(&config.Sysconfig)
+		//log.Println(111)
+		//log.Println(config.Sysconfig)
+	})
+
+
 
 	log.Println("Http  listening port: ", qu.ObjToString(config.Sysconfig["http_port"]))
 	if err := http.ListenAndServe(":"+qu.ObjToString(config.Sysconfig["http_port"]), mux); err != nil {

+ 1 - 1
udp_ocr_conter/src/config/config.go

@@ -13,7 +13,7 @@ var Udpclient mu.UdpClient //udp对象
 var Sysconfig map[string]interface{}
 var MgoIP, MgoDB, MgoC, MgoFileFiled, SidField, EidField string
 var Sys sync.RWMutex
-
+var Isjjr bool//节假日
 
 func init() {
 	util.ReadConfig(&Sysconfig)

+ 49 - 38
udp_ocr_conter/src/corntask/task_corn.go

@@ -15,6 +15,10 @@ import (
 
 var Auto = func() {
 	d := time.Now()
+	if config.Isjjr{
+		log.Println(d.Format("20060102"),"节假日")
+		return
+	}
 	nowday := time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
 	cluster.DescribeInstances() //查询多台实例的详细信息
 	ocrescs := mongodb.Find("ocr_ecs", bson.M{}, nil, bson.M{"AutoReleaseTime": 1}, false, -1, -1)
@@ -44,42 +48,49 @@ var Auto = func() {
 			log.Println("当前实例为空,无需释放", cluster.CID, )
 			return
 		}
-		if ccnum == 0 && len(cluster.CID) > 0 {
-			log.Println("释放所有实例", cluster.CID)
-			for tmpIid, _ := range cluster.CID {
-				ttt := mongodb.FindOne("ocr_ecs", bson.M{"InstanceId": tmpIid})
-				log.Println("5分钟后释放实例", tmpIid)
-				go func(tmpIid string,ttt *map[string]interface{}) {
-					time.Sleep(time.Minute * 5)
-					config.Udpclient.WriteUdp([]byte("5分钟后释放实例"), mu.OP_DELETE_DOWNLOADERCODES, &net.UDPAddr{
-						IP:   net.ParseIP(util.ObjToString((*ttt)["ip_nw"])),
-						Port: util.IntAll(config.Sysconfig["broadcast_port"]),
-					})
-					mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
-					cluster.DeleteInstance(tmpIid)
-					log.Println("5分钟后释放实例完成", tmpIid)
-				}(tmpIid,ttt)
-			}
-		} else {
-			var tmpnum int
-			for k, _ := range cluster.CID {
-				if ccnum >= tmpnum {
-					return
+		zsa := time.Date(d.Year(), d.Month(), d.Day(), util.IntAll(config.Sysconfig["swa"]), 0, 0, 0, d.Location())
+		zsb := time.Date(d.Year(), d.Month(), d.Day(), util.IntAll(config.Sysconfig["swb"]), 0, 0, 0, d.Location())
+
+		xwa := time.Date(d.Year(), d.Month(), d.Day(), util.IntAll(config.Sysconfig["xwa"]), 0, 0, 0, d.Location())
+		xwb := time.Date(d.Year(), d.Month(), d.Day(), util.IntAll(config.Sysconfig["xwb"]), 0, 0, 0, d.Location())
+		if (zsa.Before(d) && zsb.After(d)) || (xwa.Before(d) && xwb.After(d)){
+			if ccnum == 0 && len(cluster.CID) > 0 {
+				log.Println("释放所有实例", cluster.CID)
+				for tmpIid, _ := range cluster.CID {
+					ttt := mongodb.FindOne("ocr_ecs", bson.M{"InstanceId": tmpIid})
+					log.Println("5分钟后释放实例", tmpIid)
+					go func(tmpIid string,ttt *map[string]interface{}) {
+						time.Sleep(time.Minute * 5)
+						config.Udpclient.WriteUdp([]byte("5分钟后释放实例"), mu.OP_DELETE_DOWNLOADERCODES, &net.UDPAddr{
+							IP:   net.ParseIP(util.ObjToString((*ttt)["ip_nw"])),
+							Port: util.IntAll(config.Sysconfig["broadcast_port"]),
+						})
+						mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
+						cluster.DeleteInstance(tmpIid)
+						log.Println("5分钟后释放实例完成", tmpIid)
+					}(tmpIid,ttt)
+				}
+			} else {
+				var tmpnum int
+				for k, _ := range cluster.CID {
+					if ccnum >= tmpnum {
+						return
+					}
+					tmpIid := k
+					ttt := mongodb.FindOne("ocr_ecs", bson.M{"InstanceId": tmpIid})
+					log.Println("5分钟后释放实例", tmpIid)
+					go func(tmpIid string,ttt *map[string]interface{}) {
+						time.Sleep(time.Minute * 5)
+						config.Udpclient.WriteUdp([]byte("5分钟后释放实例"), mu.OP_DELETE_DOWNLOADERCODES, &net.UDPAddr{
+							IP:   net.ParseIP(util.ObjToString((*ttt)["ip_nw"])),
+							Port: util.IntAll(config.Sysconfig["broadcast_port"]),
+						})
+						mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
+						cluster.DeleteInstance(tmpIid)
+						log.Println("5分钟后释放实例完成", tmpIid)
+					}(tmpIid,ttt)
+					tmpnum--
 				}
-				tmpIid := k
-				ttt := mongodb.FindOne("ocr_ecs", bson.M{"InstanceId": tmpIid})
-				log.Println("5分钟后释放实例", tmpIid)
-				go func(tmpIid string,ttt *map[string]interface{}) {
-					time.Sleep(time.Minute * 5)
-					config.Udpclient.WriteUdp([]byte("5分钟后释放实例"), mu.OP_DELETE_DOWNLOADERCODES, &net.UDPAddr{
-						IP:   net.ParseIP(util.ObjToString((*ttt)["ip_nw"])),
-						Port: util.IntAll(config.Sysconfig["broadcast_port"]),
-					})
-					mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
-					cluster.DeleteInstance(tmpIid)
-					log.Println("5分钟后释放实例完成", tmpIid)
-				}(tmpIid,ttt)
-				tmpnum--
 			}
 		}
 		cluster.DescribeInstances()
@@ -216,12 +227,12 @@ func compute() int {
 			log.Println(496, sum, "<=", util.IntAll(config.Sysconfig["accumulated_task_lowlimit"]))
 			return 0
 		}
-		mtmm := float64(overNum) / float64(nowtime-stime) / float64(len(cluster.CID)+3) //每台每秒
+		mtmm := float64(overNum) / float64(nowtime-stime) / float64(len(cluster.CID)+util.IntAll(config.Sysconfig["gdts"])) //每台每秒
 		if mtmm <= 0 {
-			log.Println(501, overNum, int(nowtime-stime), (len(cluster.CID) + 3))
+			log.Println(501, overNum, int(nowtime-stime), (len(cluster.CID) + util.IntAll(config.Sysconfig["gdts"])))
 			return 0
 		}
-		cc := float64(sum)/float64(util.IntAll(config.Sysconfig["corntime_consuming"]))/mtmm - float64(len(cluster.CID)) - 3
+		cc := float64(sum)/float64(util.IntAll(config.Sysconfig["corntime_consuming"]))/mtmm - float64(len(cluster.CID)) - float64(util.IntAll(config.Sysconfig["gdts"]))
 		log.Println("overNum:", overNum, ",hs:", int(nowtime-stime), ",mtms:", mtmm, ",sum:", sum, cc)
 		if cc > util.Float64All(config.Sysconfig["pernum"]) {
 			return util.IntAll(config.Sysconfig["pernum"])