数据采集
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

11 meses atrás
11 meses atrás
11 meses atrás
11 meses atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package task
  2. import (
  3. "applet/app/db"
  4. taskMd "applet/app/task/md"
  5. "applet/app/utils/logx"
  6. "github.com/robfig/cron/v3"
  7. "time"
  8. )
  9. var (
  10. timer *cron.Cron
  11. jobs = map[string]func(){}
  12. baseEntryId cron.EntryID
  13. entryIds []cron.EntryID
  14. ch = make(chan int, 30)
  15. workerNum = 15 // 智盟跟单并发数量
  16. )
  17. func Init() {
  18. // 初始化任务列表
  19. initTasks()
  20. var err error
  21. timer = cron.New()
  22. // reload为初始化数据库方法
  23. if baseEntryId, err = timer.AddFunc("@every 15m", reload); err != nil {
  24. _ = logx.Fatal(err)
  25. }
  26. }
  27. func Run() {
  28. reload()
  29. timer.Start()
  30. _ = logx.Info("auto tasks running...")
  31. }
  32. func reload() {
  33. // 重新初始化数据库
  34. sysCfgDb := db.SysCfgDb{}
  35. sysCfgDb.Set()
  36. cronList, _ := sysCfgDb.SysCfgGetCron()
  37. if cronList != nil {
  38. // 删除原有所有任务
  39. if len(entryIds) > 0 {
  40. for _, v := range entryIds {
  41. if v != baseEntryId {
  42. timer.Remove(v)
  43. }
  44. }
  45. entryIds = nil
  46. }
  47. var (
  48. entryId cron.EntryID
  49. err error
  50. )
  51. for _, vv := range *cronList {
  52. if _, ok := jobs[vv.K]; ok && vv.V != "" {
  53. // fmt.Println(vv.Val)
  54. if entryId, err = timer.AddFunc(vv.V, doTask(vv.K)); err == nil {
  55. entryIds = append(entryIds, entryId)
  56. }
  57. }
  58. }
  59. }
  60. }
  61. func doTask(fnName string) func() {
  62. return func() {
  63. begin := time.Now().Local()
  64. jobs[fnName]()
  65. end := time.Now().Local()
  66. logx.Infof(
  67. " AutoTask <%s> started at <%s>, ended at <%s> duration <%s>",
  68. fnName,
  69. begin.Format("2006-01-02 15:04:05.000"),
  70. end.Format("2006-01-02 15:04:05.000"),
  71. time.Duration(end.UnixNano()-begin.UnixNano()).String(),
  72. )
  73. }
  74. }
  75. // 增加自动任务队列
  76. func initTasks() {
  77. jobs[taskMd.DataCollectCronHaodankuRealNews] = taskDataCollectCronHaodankuRealNews //
  78. jobs[taskMd.DataCollectCronHaodankuRealNews10] = taskDataCollectCronHaodankuRealNews10 //
  79. jobs[taskMd.DataCollectCronMiyuanRealNews] = taskDataCollectCronMiyuanRealNews //
  80. jobs[taskMd.DataCollectCronMiyuanRealNews10] = taskDataCollectCronMiyuanRealNews10 //
  81. }