尝试在报错时补齐缺少的candle序列

This commit is contained in:
zhangkun9038@dingtalk.com 2025-01-13 13:00:34 +08:00
parent 254646677e
commit 401f722644

View File

@ -4,12 +4,12 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/phyer/core"
"os" "os"
"regexp"
"strconv" "strconv"
"strings" "strings"
"github.com/phyer/core"
// "sync" // "sync"
"time" "time"
// //
@ -193,6 +193,19 @@ func LoopMakeMaX(cr *core.Core) {
} }
} }
func InvokeCandle(cr *core.Core, candleName string, period string, from int64, to int64) error {
restQ := core.RestQueue{
InstId: candleName,
Bar: period,
Limit: "100",
After: from,
}
js, err := json.Marshal(restQ)
cli := cr.RedisLocalCli
_, err = cli.LPush("restQueue", js).Result()
return err
}
// setName := "candle" + period + "|" + instId + "|sortedSet" // setName := "candle" + period + "|" + instId + "|sortedSet"
// count: 倒推多少个周期开始拿数据 // count: 倒推多少个周期开始拿数据
// from: 倒推的起始时间点 // from: 倒推的起始时间点
@ -244,6 +257,13 @@ func GetRangeCandleSortedSet(cr *core.Core, setName string, count int, from time
if err != nil || len(keyAry) == 0 { if err != nil || len(keyAry) == 0 {
logrus.Warning("no record with cmd: ZRevRangeByScore ", "setName: ", setName, " from: ", froms, " sts: ", sts, " err:", err.Error()) logrus.Warning("no record with cmd: ZRevRangeByScore ", "setName: ", setName, " from: ", froms, " sts: ", sts, " err:", err.Error())
logrus.Warning("zrev lens of ary: lens: ", len(ary), "GetRangeSortedSet ZRevRangeByScore:", "setName:", setName, " opt.Max:", opt.Max, " opt.Min:", opt.Min) logrus.Warning("zrev lens of ary: lens: ", len(ary), "GetRangeSortedSet ZRevRangeByScore:", "setName:", setName, " opt.Max:", opt.Max, " opt.Min:", opt.Min)
parts := strings.Split(setName, "|")
instId := parts[1]
// 定义正则表达式,匹配 maX 或 candle 后面的内容直到第一个竖线
re := regexp.MustCompile(`(?:maX|candle)([^\|]+)`)
// 使用正则表达式提取匹配的内容
matches := re.FindStringSubmatch(setName)
err := InvokeCandle(cr, instId, matches[1], fromt, sti)
return &cdl, err return &cdl, err
} }
for _, str := range keyAry { for _, str := range keyAry {