修复流模式下客户端中断导致的计费异常问题

This commit is contained in:
CaIon 2023-11-26 01:19:20 +08:00
parent a15f2d546e
commit aa29868def

View File

@ -9,6 +9,7 @@ import (
"net/http"
"one-api/common"
"strings"
"sync"
)
func openaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*OpenAIErrorWithStatusCode, string) {
@ -28,7 +29,9 @@ func openaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*O
})
dataChan := make(chan string)
stopChan := make(chan bool)
var wg sync.WaitGroup
go func() {
wg.Add(1)
var streamItems []string
for scanner.Scan() {
data := scanner.Text()
@ -71,6 +74,7 @@ func openaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*O
}
}
}
wg.Done()
stopChan <- true
}()
setEventStreamHeaders(c)
@ -92,6 +96,7 @@ func openaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*O
if err != nil {
return errorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), ""
}
wg.Wait()
return nil, responseTextBuilder.String()
}