load_data.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "app.yhyue.com/data_processing/common_utils/log"
  4. "encoding/json"
  5. "fmt"
  6. "go.uber.org/zap"
  7. "proposed_project/config"
  8. "sync"
  9. "time"
  10. )
  11. func loadProject() {
  12. sess := MgoPro.GetMgoConn()
  13. defer MgoPro.DestoryMongoConn(sess)
  14. f := map[string]interface{}{"list": 0}
  15. it := sess.DB(MgoPro.DbName).C(config.Conf.DB.MongoP.ProposedColl).Find(nil).Select(f).Iter()
  16. count := 0
  17. ch := make(chan bool, 3)
  18. wg := &sync.WaitGroup{}
  19. for result := make(map[string]interface{}); it.Next(result); count++ {
  20. if count%40000 == 0 {
  21. log.Info(fmt.Sprintf("iter --- %d", count))
  22. }
  23. ch <- true
  24. wg.Add(1)
  25. go func(tmp map[string]interface{}) {
  26. defer func() {
  27. <-ch
  28. wg.Done()
  29. }()
  30. bys, _ := json.Marshal(tmp)
  31. var p *Project
  32. _ = json.Unmarshal(bys, &p)
  33. AllPidMapLock.Lock()
  34. AllPidMap[p.Id] = &ID{P: p}
  35. AllPidMapLock.Unlock()
  36. AllCodeMapLock.Lock()
  37. AllCodeMap[p.ApproveCode] = p.Id
  38. AllCodeMapLock.Unlock()
  39. AllPnMapLock.Lock()
  40. res := AllPnMap[p.Id]
  41. if res != nil {
  42. res.Id[p.Id] = p.ProjectName
  43. } else {
  44. res = &Pname{
  45. Id: map[string]string{p.Id: p.ProjectName},
  46. }
  47. }
  48. AllPnMapLock.Unlock()
  49. }(result)
  50. result = make(map[string]interface{})
  51. }
  52. wg.Wait()
  53. time.Sleep(2 * time.Second)
  54. log.Info("loadProject", zap.Int("count", count), zap.Int("pcode", len(AllCodeMap)))
  55. }