From f1fb7b32a351005c429bfa24e56904aa80550020 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 25 Mar 2024 16:17:35 +0800 Subject: [PATCH 01/12] chore: update model ratio --- common/model-ratio.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/common/model-ratio.go b/common/model-ratio.go index 7c6a012..63d3247 100644 --- a/common/model-ratio.go +++ b/common/model-ratio.go @@ -3,7 +3,6 @@ package common import ( "encoding/json" "strings" - "time" ) // modelRatio @@ -27,7 +26,7 @@ var DefaultModelRatio = map[string]float64{ "gpt-4-turbo-preview": 5, // $0.01 / 1K tokens "gpt-4-vision-preview": 5, // $0.01 / 1K tokens "gpt-4-1106-vision-preview": 5, // $0.01 / 1K tokens - "gpt-3.5-turbo": 0.75, // $0.0015 / 1K tokens + "gpt-3.5-turbo": 0.25, // $0.0015 / 1K tokens "gpt-3.5-turbo-0301": 0.75, "gpt-3.5-turbo-0613": 0.75, "gpt-3.5-turbo-16k": 1.5, // $0.003 / 1K tokens @@ -188,22 +187,15 @@ func GetModelRatio(name string) float64 { func GetCompletionRatio(name string) float64 { if strings.HasPrefix(name, "gpt-3.5") { - if strings.HasSuffix(name, "0125") { + if name == "gpt-3.5-turbo" || strings.HasSuffix(name, "0125") { + // https://openai.com/blog/new-embedding-models-and-api-updates + // Updated GPT-3.5 Turbo model and lower pricing return 3 } if strings.HasSuffix(name, "1106") { return 2 } - if name == "gpt-3.5-turbo" || name == "gpt-3.5-turbo-16k" { - // TODO: clear this after 2023-12-11 - now := time.Now() - // https://platform.openai.com/docs/models/continuous-model-upgrades - // if after 2023-12-11, use 2 - if now.After(time.Date(2023, 12, 11, 0, 0, 0, 0, time.UTC)) { - return 2 - } - } - return 1.333333 + return 4.0 / 3.0 } if strings.HasPrefix(name, "gpt-4") { if strings.HasSuffix(name, "preview") { @@ -218,5 +210,15 @@ func GetCompletionRatio(name string) float64 { } else if strings.HasPrefix(name, "claude-3") { return 5 } + if strings.HasPrefix(name, "mistral-") { + return 3 + } + if strings.HasPrefix(name, "gemini-") { + return 3 + } + switch name { + case "llama2-70b-4096": + return 0.8 / 0.7 + } return 1 } From b2a280c1ec14e902a9f61a6c5e60185a855f5ab5 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 25 Mar 2024 16:49:53 +0800 Subject: [PATCH 02/12] =?UTF-8?q?fix:=20=E6=97=A0=E6=B3=95=E5=A4=8D?= =?UTF-8?q?=E5=88=B6=E5=BC=B9=E7=AA=97=E8=BF=87=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/components/TokensTable.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/src/components/TokensTable.js b/web/src/components/TokensTable.js index 4687ce9..015a5d2 100644 --- a/web/src/components/TokensTable.js +++ b/web/src/components/TokensTable.js @@ -426,8 +426,11 @@ const TokensTable = () => { if (await copy(text)) { showSuccess('已复制到剪贴板!'); } else { - // setSearchKeyword(text); - Modal.error({ title: '无法复制到剪贴板,请手动复制', content: text }); + Modal.error({ + title: '无法复制到剪贴板,请手动复制', + content: text, + size: 'large', + }); } }; From a7a1fc615d6ceab5e4e954047130eefe0ed00b44 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 25 Mar 2024 22:33:33 +0800 Subject: [PATCH 03/12] feat: remove azure model TrimPrefix --- relay/channel/openai/adaptor.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/relay/channel/openai/adaptor.go b/relay/channel/openai/adaptor.go index 8d8da3e..7dc591e 100644 --- a/relay/channel/openai/adaptor.go +++ b/relay/channel/openai/adaptor.go @@ -10,8 +10,8 @@ import ( "one-api/dto" "one-api/relay/channel" "one-api/relay/channel/ai360" - "one-api/relay/channel/moonshot" "one-api/relay/channel/lingyiwanwu" + "one-api/relay/channel/moonshot" relaycommon "one-api/relay/common" "one-api/service" "strings" @@ -34,9 +34,6 @@ func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { model_ := info.UpstreamModelName model_ = strings.Replace(model_, ".", "", -1) // https://github.com/songquanpeng/one-api/issues/67 - model_ = strings.TrimSuffix(model_, "-0301") - model_ = strings.TrimSuffix(model_, "-0314") - model_ = strings.TrimSuffix(model_, "-0613") requestURL = fmt.Sprintf("/openai/deployments/%s/%s", model_, task) return relaycommon.GetFullRequestURL(info.BaseUrl, requestURL, info.ChannelType), nil From 1587ea565b1bd98879f9b7bcfd0d4ba0f9a440b6 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 25 Mar 2024 22:33:46 +0800 Subject: [PATCH 04/12] feat: support gemini-1.5 --- common/model-ratio.go | 7 +++++-- relay/channel/gemini/constant.go | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/common/model-ratio.go b/common/model-ratio.go index 63d3247..f618af8 100644 --- a/common/model-ratio.go +++ b/common/model-ratio.go @@ -71,8 +71,11 @@ var DefaultModelRatio = map[string]float64{ "ERNIE-Bot-4": 8.572, // ¥0.12 / 1k tokens "Embedding-V1": 0.1429, // ¥0.002 / 1k tokens "PaLM-2": 1, - "gemini-pro": 1, // $0.00025 / 1k characters -> $0.001 / 1k tokens - "gemini-pro-vision": 1, // $0.00025 / 1k characters -> $0.001 / 1k tokens + "gemini-pro": 1, // $0.00025 / 1k characters -> $0.001 / 1k tokens + "gemini-pro-vision": 1, // $0.00025 / 1k characters -> $0.001 / 1k tokens + "gemini-1.0-pro-vision-001": 1, + "gemini-1.0-pro-001": 1, + "gemini-1.5-pro": 1, "chatglm_turbo": 0.3572, // ¥0.005 / 1k tokens "chatglm_pro": 0.7143, // ¥0.01 / 1k tokens "chatglm_std": 0.3572, // ¥0.005 / 1k tokens diff --git a/relay/channel/gemini/constant.go b/relay/channel/gemini/constant.go index 24e85a8..582f4c0 100644 --- a/relay/channel/gemini/constant.go +++ b/relay/channel/gemini/constant.go @@ -5,8 +5,8 @@ const ( ) var ModelList = []string{ - "gemini-pro", - "gemini-pro-vision", + "gemini-pro", "gemini-1.0-pro-001", "gemini-1.5-pro", + "gemini-pro-vision", "gemini-1.0-pro-vision-001", } var ChannelName = "google gemini" From cc8cc8b386de432dc78a7279c94f56e054d2d186 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 25 Mar 2024 22:51:31 +0800 Subject: [PATCH 05/12] fix: try to fix 307 --- relay/relay-text.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relay/relay-text.go b/relay/relay-text.go index a8ba0e8..ec64e04 100644 --- a/relay/relay-text.go +++ b/relay/relay-text.go @@ -162,7 +162,7 @@ func TextHelper(c *gin.Context) *dto.OpenAIErrorWithStatusCode { if resp.StatusCode != http.StatusOK { returnPreConsumedQuota(c, relayInfo.TokenId, userQuota, preConsumedQuota) - return service.RelayErrorHandler(resp) + return service.OpenAIErrorWrapper(fmt.Errorf("bad response status code: %d", resp.StatusCode), "bad_response_status_code", resp.StatusCode) } usage, openaiErr, sensitiveResp := adaptor.DoResponse(c, resp, relayInfo) From d8c91fa4487416eba3e16775466790044d4671dd Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 25 Mar 2024 22:54:15 +0800 Subject: [PATCH 06/12] =?UTF-8?q?feat:=20=E8=BF=9B=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E6=9A=B4=E9=9C=B2=E6=95=B0=E4=B8=8A=E6=B8=B8?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E6=95=B0=E6=8D=AE=E5=BA=93=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/error.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/error.go b/service/error.go index 424be5d..cda26b3 100644 --- a/service/error.go +++ b/service/error.go @@ -29,7 +29,7 @@ func MidjourneyErrorWithStatusCodeWrapper(code int, desc string, statusCode int) func OpenAIErrorWrapper(err error, code string, statusCode int) *dto.OpenAIErrorWithStatusCode { text := err.Error() // 定义一个正则表达式匹配URL - if strings.Contains(text, "Post") { + if strings.Contains(text, "Post") || strings.Contains(text, "dial") { common.SysLog(fmt.Sprintf("error: %s", text)) text = "请求上游地址失败" } From 2a345ae07081503c18777ff94c36288d5069f723 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 25 Mar 2024 22:55:33 +0800 Subject: [PATCH 07/12] ci: update ci --- .github/workflows/docker-image-amd64.yml | 1 - .github/workflows/docker-image-arm64.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/docker-image-amd64.yml b/.github/workflows/docker-image-amd64.yml index d0882d9..36236df 100644 --- a/.github/workflows/docker-image-amd64.yml +++ b/.github/workflows/docker-image-amd64.yml @@ -4,7 +4,6 @@ on: push: tags: - '*' - - '!*-alpha*' workflow_dispatch: inputs: name: diff --git a/.github/workflows/docker-image-arm64.yml b/.github/workflows/docker-image-arm64.yml index 44aec80..d86ec5b 100644 --- a/.github/workflows/docker-image-arm64.yml +++ b/.github/workflows/docker-image-arm64.yml @@ -4,7 +4,6 @@ on: push: tags: - '*' - - '!*-alpha*' workflow_dispatch: inputs: name: From 3cf2f0d5cbdfa485d4df832b125ba4d74557ad0a Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Tue, 26 Mar 2024 18:21:38 +0800 Subject: [PATCH 08/12] fix: CountTokenInput --- service/token_counter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/token_counter.go b/service/token_counter.go index 2147e88..f2e7a03 100644 --- a/service/token_counter.go +++ b/service/token_counter.go @@ -208,7 +208,7 @@ func CountTokenInput(input any, model string, check bool) (int, error, bool) { } return CountTokenText(text, model, check) } - return 0, errors.New("unsupported input type"), false + return 0, nil, false } func CountAudioToken(text string, model string, check bool) (int, error, bool) { From 6114c9bb964317300c0daf6660fedbbcac7179ae Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Tue, 26 Mar 2024 18:49:53 +0800 Subject: [PATCH 09/12] fix: CountTokenInput --- service/token_counter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/token_counter.go b/service/token_counter.go index f2e7a03..5255c80 100644 --- a/service/token_counter.go +++ b/service/token_counter.go @@ -208,7 +208,7 @@ func CountTokenInput(input any, model string, check bool) (int, error, bool) { } return CountTokenText(text, model, check) } - return 0, nil, false + return CountTokenInput(fmt.Sprintf("%v", input), model, check) } func CountAudioToken(text string, model string, check bool) (int, error, bool) { From 319e97d677ae82baa0f23bcc1fc765ce2cd3bb8a Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Tue, 26 Mar 2024 19:27:11 +0800 Subject: [PATCH 10/12] fix: ollama channel test --- controller/channel-test.go | 1 + relay/channel/ollama/adaptor.go | 3 +-- relay/channel/ollama/relay-ollama.go | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/controller/channel-test.go b/controller/channel-test.go index 2eee554..6d64a24 100644 --- a/controller/channel-test.go +++ b/controller/channel-test.go @@ -108,6 +108,7 @@ func buildTestRequest() *dto.GeneralOpenAIRequest { testRequest := &dto.GeneralOpenAIRequest{ Model: "", // this will be set later MaxTokens: 1, + Stream: false, } content, _ := json.Marshal("hi") testMessage := dto.Message{ diff --git a/relay/channel/ollama/adaptor.go b/relay/channel/ollama/adaptor.go index 69a97e3..4c17252 100644 --- a/relay/channel/ollama/adaptor.go +++ b/relay/channel/ollama/adaptor.go @@ -2,7 +2,6 @@ package ollama import ( "errors" - "fmt" "github.com/gin-gonic/gin" "io" "net/http" @@ -20,7 +19,7 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo, request dto.GeneralOpenAIReq } func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { - return fmt.Sprintf("%s/api/chat", info.BaseUrl), nil + return relaycommon.GetFullRequestURL(info.BaseUrl, info.RequestURLPath, info.ChannelType), nil } func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request, info *relaycommon.RelayInfo) error { diff --git a/relay/channel/ollama/relay-ollama.go b/relay/channel/ollama/relay-ollama.go index 0662ddd..41a2a15 100644 --- a/relay/channel/ollama/relay-ollama.go +++ b/relay/channel/ollama/relay-ollama.go @@ -1,6 +1,8 @@ package ollama -import "one-api/dto" +import ( + "one-api/dto" +) func requestOpenAI2Ollama(request dto.GeneralOpenAIRequest) *OllamaRequest { messages := make([]dto.Message, 0, len(request.Messages)) From 8eedad9470ee723f7cd8fe8229f77c39f934b8cb Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Tue, 26 Mar 2024 19:53:53 +0800 Subject: [PATCH 11/12] feat: support ollama embedding --- relay/channel/ollama/adaptor.go | 21 ++++++- relay/channel/ollama/dto.go | 28 ++++++--- relay/channel/ollama/relay-ollama.go | 94 +++++++++++++++++++++++++--- 3 files changed, 120 insertions(+), 23 deletions(-) diff --git a/relay/channel/ollama/adaptor.go b/relay/channel/ollama/adaptor.go index 4c17252..f66d9a9 100644 --- a/relay/channel/ollama/adaptor.go +++ b/relay/channel/ollama/adaptor.go @@ -9,6 +9,7 @@ import ( "one-api/relay/channel" "one-api/relay/channel/openai" relaycommon "one-api/relay/common" + relayconstant "one-api/relay/constant" "one-api/service" ) @@ -19,7 +20,12 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo, request dto.GeneralOpenAIReq } func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { - return relaycommon.GetFullRequestURL(info.BaseUrl, info.RequestURLPath, info.ChannelType), nil + switch info.RelayMode { + case relayconstant.RelayModeEmbeddings: + return info.BaseUrl + "/api/embeddings", nil + default: + return relaycommon.GetFullRequestURL(info.BaseUrl, info.RequestURLPath, info.ChannelType), nil + } } func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request, info *relaycommon.RelayInfo) error { @@ -31,7 +37,12 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, request *dto.Gen if request == nil { return nil, errors.New("request is nil") } - return requestOpenAI2Ollama(*request), nil + switch relayMode { + case relayconstant.RelayModeEmbeddings: + return requestOpenAI2Embeddings(*request), nil + default: + return requestOpenAI2Ollama(*request), nil + } } func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInfo, requestBody io.Reader) (*http.Response, error) { @@ -44,7 +55,11 @@ func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycom err, responseText = openai.OpenaiStreamHandler(c, resp, info.RelayMode) usage, _ = service.ResponseText2Usage(responseText, info.UpstreamModelName, info.PromptTokens) } else { - err, usage, sensitiveResp = openai.OpenaiHandler(c, resp, info.PromptTokens, info.UpstreamModelName, info.RelayMode) + if info.RelayMode == relayconstant.RelayModeEmbeddings { + err, usage, sensitiveResp = ollamaEmbeddingHandler(c, resp, info.PromptTokens, info.UpstreamModelName, info.RelayMode) + } else { + err, usage, sensitiveResp = openai.OpenaiHandler(c, resp, info.PromptTokens, info.UpstreamModelName, info.RelayMode) + } } return } diff --git a/relay/channel/ollama/dto.go b/relay/channel/ollama/dto.go index a43fb84..a6d6238 100644 --- a/relay/channel/ollama/dto.go +++ b/relay/channel/ollama/dto.go @@ -3,16 +3,24 @@ package ollama import "one-api/dto" type OllamaRequest struct { - Model string `json:"model,omitempty"` - Messages []dto.Message `json:"messages,omitempty"` - Stream bool `json:"stream,omitempty"` - Options *OllamaOptions `json:"options,omitempty"` + Model string `json:"model,omitempty"` + Messages []dto.Message `json:"messages,omitempty"` + Stream bool `json:"stream,omitempty"` + Temperature float64 `json:"temperature,omitempty"` + Seed float64 `json:"seed,omitempty"` + Topp float64 `json:"top_p,omitempty"` + TopK int `json:"top_k,omitempty"` + Stop any `json:"stop,omitempty"` } -type OllamaOptions struct { - Temperature float64 `json:"temperature,omitempty"` - Seed float64 `json:"seed,omitempty"` - Topp float64 `json:"top_p,omitempty"` - TopK int `json:"top_k,omitempty"` - Stop any `json:"stop,omitempty"` +type OllamaEmbeddingRequest struct { + Model string `json:"model,omitempty"` + Prompt any `json:"prompt,omitempty"` } + +type OllamaEmbeddingResponse struct { + Embedding []float64 `json:"embedding,omitempty"` +} + +//type OllamaOptions struct { +//} diff --git a/relay/channel/ollama/relay-ollama.go b/relay/channel/ollama/relay-ollama.go index 41a2a15..fa5f818 100644 --- a/relay/channel/ollama/relay-ollama.go +++ b/relay/channel/ollama/relay-ollama.go @@ -1,7 +1,14 @@ package ollama import ( + "bytes" + "encoding/json" + "fmt" + "github.com/gin-gonic/gin" + "io" + "net/http" "one-api/dto" + "one-api/service" ) func requestOpenAI2Ollama(request dto.GeneralOpenAIRequest) *OllamaRequest { @@ -20,15 +27,82 @@ func requestOpenAI2Ollama(request dto.GeneralOpenAIRequest) *OllamaRequest { Stop, _ = request.Stop.([]string) } return &OllamaRequest{ - Model: request.Model, - Messages: messages, - Stream: request.Stream, - Options: &OllamaOptions{ - Temperature: request.Temperature, - Seed: request.Seed, - Topp: request.TopP, - TopK: request.TopK, - Stop: Stop, - }, + Model: request.Model, + Messages: messages, + Stream: request.Stream, + Temperature: request.Temperature, + Seed: request.Seed, + Topp: request.TopP, + TopK: request.TopK, + Stop: Stop, } } + +func requestOpenAI2Embeddings(request dto.GeneralOpenAIRequest) *OllamaEmbeddingRequest { + return &OllamaEmbeddingRequest{ + Model: request.Model, + Prompt: request.Input, + } +} + +func ollamaEmbeddingHandler(c *gin.Context, resp *http.Response, promptTokens int, model string, relayMode int) (*dto.OpenAIErrorWithStatusCode, *dto.Usage, *dto.SensitiveResponse) { + var ollamaEmbeddingResponse OllamaEmbeddingResponse + responseBody, err := io.ReadAll(resp.Body) + if err != nil { + return service.OpenAIErrorWrapper(err, "read_response_body_failed", http.StatusInternalServerError), nil, nil + } + err = resp.Body.Close() + if err != nil { + return service.OpenAIErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), nil, nil + } + err = json.Unmarshal(responseBody, &ollamaEmbeddingResponse) + if err != nil { + return service.OpenAIErrorWrapper(err, "unmarshal_response_body_failed", http.StatusInternalServerError), nil, nil + } + data := make([]dto.OpenAIEmbeddingResponseItem, 0, 1) + data = append(data, dto.OpenAIEmbeddingResponseItem{ + Embedding: ollamaEmbeddingResponse.Embedding, + Object: "embedding", + }) + usage := &dto.Usage{ + TotalTokens: promptTokens, + CompletionTokens: 0, + PromptTokens: promptTokens, + } + embeddingResponse := &dto.OpenAIEmbeddingResponse{ + Object: "list", + Data: data, + Model: model, + Usage: *usage, + } + doResponseBody, err := json.Marshal(embeddingResponse) + if err != nil { + return service.OpenAIErrorWrapper(err, "marshal_response_body_failed", http.StatusInternalServerError), nil, nil + } + resp.Body = io.NopCloser(bytes.NewBuffer(doResponseBody)) + // We shouldn't set the header before we parse the response body, because the parse part may fail. + // And then we will have to send an error response, but in this case, the header has already been set. + // So the httpClient will be confused by the response. + // For example, Postman will report error, and we cannot check the response at all. + // Copy headers + for k, v := range resp.Header { + // 删除任何现有的相同头部,以防止重复添加头部 + c.Writer.Header().Del(k) + for _, vv := range v { + c.Writer.Header().Add(k, vv) + } + } + // reset content length + c.Writer.Header().Del("Content-Length") + c.Writer.Header().Set("Content-Length", fmt.Sprintf("%d", len(doResponseBody))) + c.Writer.WriteHeader(resp.StatusCode) + _, err = io.Copy(c.Writer, resp.Body) + if err != nil { + return service.OpenAIErrorWrapper(err, "copy_response_body_failed", http.StatusInternalServerError), nil, nil + } + err = resp.Body.Close() + if err != nil { + return service.OpenAIErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), nil, nil + } + return nil, usage, nil +} From 786ccc7da0c040f95d8f4277be5cde0d6a51f838 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Tue, 26 Mar 2024 23:00:04 +0800 Subject: [PATCH 12/12] =?UTF-8?q?feat:=20=E5=BC=80=E5=90=AFredis=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E8=AE=BE=E7=BD=AESYNC=5FFREQUENCY?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=BA60?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/redis.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/redis.go b/common/redis.go index 2e3e56d..6a35235 100644 --- a/common/redis.go +++ b/common/redis.go @@ -18,9 +18,8 @@ func InitRedisClient() (err error) { return nil } if os.Getenv("SYNC_FREQUENCY") == "" { - RedisEnabled = false - SysLog("SYNC_FREQUENCY not set, Redis is disabled") - return nil + SysLog("SYNC_FREQUENCY not set, use default value 60") + SyncFrequency = 60 } SysLog("Redis is enabled") opt, err := redis.ParseURL(os.Getenv("REDIS_CONN_STRING"))