send_email.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // main
  2. package config
  3. import (
  4. "fmt"
  5. "gopkg.in/mgo.v2/bson"
  6. "io/ioutil"
  7. "log"
  8. "net"
  9. "net/http"
  10. "qfw/util"
  11. "qfw/util/mongodb"
  12. "time"
  13. )
  14. func SendEmail() {
  15. sleeptime := 10
  16. for {
  17. b := check()
  18. if b {
  19. sleeptime = 60
  20. } else {
  21. sleeptime = 10
  22. }
  23. time.Sleep(time.Duration(sleeptime) * time.Minute)
  24. }
  25. lock := make(chan bool)
  26. <-lock
  27. }
  28. func check() bool {
  29. send := false
  30. mongodb.Count("qfw", "")
  31. taskArr := mongodb.Find("ocr_task", bson.M{"isrun": bson.M{
  32. "$ne": "stop",
  33. }}, `{_id:1}`, nil, false, -1, -1)
  34. taskNum := len(*taskArr)
  35. if taskNum == 0 {
  36. return false
  37. }
  38. var sumNum int = 0
  39. for _, v := range *taskArr {
  40. sumNum += mongodb.Count("bidding", bson.M{"_id": bson.M{
  41. "$gte": bson.ObjectIdHex(util.ObjToString(v["start"])),
  42. "$lte": bson.ObjectIdHex(util.ObjToString(v[util.ObjToString(EidField)])),
  43. }})
  44. }
  45. var content = ""
  46. if sumNum > 10000 {
  47. content = "附件识别积累任务超过1W条,当前积累"+fmt.Sprint(sumNum)
  48. }
  49. if len(content) > 0 {
  50. sendMail(content)
  51. send = true
  52. }
  53. return send
  54. }
  55. func sendMail(content string) {
  56. res, err := http.Get(fmt.Sprintf("%s?to=%s&title=%s&body=%s", api, tomail, "udp_ocr_conter", "附件识别检测异常:"+content))
  57. defer res.Body.Close()
  58. if err == nil {
  59. read, err := ioutil.ReadAll(res.Body)
  60. log.Println("邮件发送:", string(read), err)
  61. }
  62. }
  63. func netStatus(addr string) bool {
  64. _, err := net.DialTimeout("tcp", addr, time.Second*3)
  65. if err != nil {
  66. return false
  67. }
  68. return true
  69. }