Browse Source

连接池关闭

fengweiqiang 5 years ago
parent
commit
da2be63c08
2 changed files with 26 additions and 27 deletions
  1. 1 1
      udp_winner/main.go
  2. 25 26
      udp_winner/timedTaskWinner.go

+ 1 - 1
udp_winner/main.go

@@ -78,7 +78,7 @@ func init() {
 	FClient.DbName = Config["mgodb_extract_kf"]
 	//mongodbSim.DbName = "qfw"
 	FClient.InitPool()
-	FClientmgoConn := FClient.GetMgoConn()
+	FClientmgoConn := FClient.GetMgoConn(86400)
 	defer FClient.DestoryMongoConn(FClientmgoConn)
 	//加载省市县代码
 	cursor2 := FClientmgoConn.DB(Config["mgodb_extract_kf"]).C("address").Find(bson.M{}).Select(bson.M{"province": 1, "code": 1, "city": 1, "district": 1}).Iter()

+ 25 - 26
udp_winner/timedTaskWinner.go

@@ -37,20 +37,21 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 	// topscopeclass项目类型-industry行业类型&&topscopeclass联系人项目类型
 	// (area地区-province省份 city城市-city城市 district区县-district区县)
 	// winneraddr-company_address企业地址
-	SourceClientcc := SourceClient.GetMgoConn()
-	defer SourceClient.DestoryMongoConn(SourceClientcc)
+	SourceClientcc := SourceClient.GetMgoConn(86400)
 	cursor := SourceClientcc.DB(Config["mgodb_bidding"]).C(Config["mgodb_mgoinit_c"]).Find(bson.M{
 		"_id": bson.M{
 			"$gte": GId,
 			"$lte": LtId,
 		},
 	}).Select(bson.M{"winner": 1, "winnertel": 1, "winnerperson": 1, "topscopeclass": 1, "winneraddr": 1}).Iter()
+
 	if cursor.Err() != nil {
+		SourceClientcc.Close()
 		log.Println(cursor.Err())
 		return
 	}
 	//判断是否是存量,是存量走Redis遍历
- 	if v, ok := (*mapinfo)["data_info"].(string); ok && v == "save" {
+	if v, ok := (*mapinfo)["data_info"].(string); ok && v == "save" {
 		//存量处理
 		conn := HisRedisPool.Conn()
 		defer conn.Close()
@@ -85,6 +86,7 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 				log.Println(err)
 			}
 		}
+		SourceClientcc.Close()
 		//遍历redis
 		if scan := conn.Scan(0, "", 100); scan.Err() != nil {
 			log.Println(scan.Err())
@@ -101,15 +103,14 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 				rdb.Do("SELECT", Config["redis_winner_db"])
 				if reply, err := redis.String(rdb.Do("GET", redisCName)); err != nil {
 					//redis不存在,存到临时表,定时任务处理
-					//FClient.DbName = Config["mgodb_extract_kf"]
+					FClient.DbName = Config["mgodb_extract_kf"]
 					//if tmpid := FClient.Save("winner_new", tmps); tmpid == nil {
 					//	log.Println("存量 FClient.Save err", tmpid)
 					//}
-					fsavec := FClient.GetMgoConn().DB(Config["mgodb_extract_kf"]).C("winner_new")
 					for _, vmap := range rValuesMaps {
 						vmap["_id"] = bson.ObjectIdHex(vmap["_id"].(string))
-						if err = fsavec.Insert(vmap); err != nil{
-							log.Println("存量 FClient.Save err", err)
+						if err = FClient.SaveForOld("winner_new", vmap); err != nil {
+							log.Println("存量 FClient.Save err", err,vmap)
 						}
 					}
 					//log.Println("get redis id err:定时任务处理", err, tmp)
@@ -230,8 +231,8 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 			if reply, err := redis.String(rdb.Do("GET", tmp["winner"])); err != nil {
 				//redis不存在存到临时表,定时任务处理
 				FClient.DbName = Config["mgodb_extract_kf"]
-				if tmpid := FClient.Save("winner_new", tmp); tmpid == "" {
-					log.Println("FClient.Save err", tmpid)
+				if err := FClient.SaveForOld("winner_new", tmp); err!=nil {
+					log.Println("FClient.Save err", err,tmp)
 				}
 				//log.Println("get redis id err:定时任务处理", err, tmp)
 				if err := rdb.Close(); err != nil {
@@ -349,19 +350,18 @@ func TimedTaskWinner() {
 	//time.Sleep(time.Hour*70)
 	t2 := time.NewTimer(time.Second * 5)
 	for range t2.C {
-		Fcconn := FClient.GetMgoConn()
-		defer FClient.DestoryMongoConn(Fcconn)
+		Fcconn := FClient.GetMgoConn(86400)
+		defer Fcconn.Close()
 		tmpLast := map[string]interface{}{}
 		if iter := Fcconn.DB(Config["mgodb_extract_kf"]).C("winner_new").Find(bson.M{}).Sort("-_id").Limit(1).Iter(); iter != nil {
 			if !iter.Next(&tmpLast) {
 				//临时表无数据
 				log.Println("临时表无数据:")
-				t2.Reset(time.Minute * 5)
+				t2.Reset(time.Minute * 1)
 				continue
 			} else {
 				log.Println("临时表有数据:", tmpLast)
-				fconn := FClient.GetMgoConn()
-				defer FClient.DestoryMongoConn(fconn)
+				fconn := FClient.GetMgoConn(86400)
 				cursor := fconn.DB(Config["mgodb_extract_kf"]).C("winner_new").Find(bson.M{
 					"_id": bson.M{
 						"$lte": tmpLast["_id"],
@@ -415,11 +415,11 @@ func TimedTaskWinner() {
 					if !b || (*resulttmp)["_id"] == nil {
 						//log.Println(r)
 						//匹配不到原始库,存入异常表删除临时表
-						fdmongo := FClient.GetMgoConn().DB(Config["mgodb_extract_kf"])
-						if err := fdmongo.C("winner_err").Insert( tmp); err != nil {
-							log.Println("存入异常表错误", err,tmp)
+						FClient.DbName = Config["mgodb_extract_kf"]
+						if err := FClient.SaveForOld("winner_err", tmp); err != nil {
+							log.Println("存入异常表错误", err, tmp)
 						}
-						if deleteNum := fdmongo.C("winner_new").RemoveId( bson.ObjectIdHex(tmpId)); !b {
+						if deleteNum := FClient.Del("winner_new", bson.M{"_id": bson.ObjectIdHex(tmpId)}); !b {
 							log.Println("删除临时表错误", deleteNum)
 						}
 						continue
@@ -487,16 +487,16 @@ func TimedTaskWinner() {
 						//添加临时表匹配到的联系人
 						vvv := make(map[string]interface{})
 						vvv["infoid"] = tmp["_id"].(bson.ObjectId).Hex()
-						if tmp["winnerperson"] != nil{
+						if tmp["winnerperson"] != nil {
 							vvv["contact_person"] = tmp["winnerperson"]
-						}else {
+						} else {
 							vvv["contact_person"] = ""
 						}
 						vvv["contact_type"] = "项目联系人"
 						//	"winner": 1, "winnertel": 1, "winnerperson": 1, "topscopeclass": 1
-						if tmp["winnertel"] != nil{
+						if tmp["winnertel"] != nil {
 							vvv["phone"] = tmp["winnertel"]
-						}else {
+						} else {
 							vvv["phone"] = ""
 						}
 						tmpclass := make([]string, 0)
@@ -569,8 +569,8 @@ func TimedTaskWinner() {
 							} else if sk == "wechat_accounts" {
 								savetmp[sk] = []interface{}{}
 								continue
-							}else if sk == "industry"{
-								tmpTopscopeclass := make([]string,0)
+							} else if sk == "industry" {
+								tmpTopscopeclass := make([]string, 0)
 								if v, ok := tmp["topscopeclass"].([]interface{}); ok {
 									for _, vv := range v {
 										if vvv, ok := vv.(string); ok && len(vvv) > 1 {
@@ -593,8 +593,6 @@ func TimedTaskWinner() {
 						//保存mongo
 						FClient.DbName = Config["mgodb_extract_kf"]
 
-
-
 						saveid := FClient.Save(Config["mgo_qyk_c"], savetmp)
 						if saveid != "" {
 							//保存redis
@@ -633,6 +631,7 @@ func TimedTaskWinner() {
 						}
 					}
 				}
+				fconn.Close()
 			}
 		}
 		t2.Reset(time.Minute)