openai-proxy icon indicating copy to clipboard operation
openai-proxy copied to clipboard

Streaming模式并不实时

Open vaxin opened this issue 1 year ago • 2 comments

io.Copy无法保证实时转发streaming流,需要改进

`buf := make([]byte, 1024*1024) // 1MB buffer for {

n, err := resp.Body.Read(buf)
if err != nil && err != io.EOF {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
if n == 0 {
    break
}
if _, err := w.Write(buf[:n]); err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
w.(http.Flusher).Flush()

}`

vaxin avatar Apr 07 '23 02:04 vaxin

请教 io.Copy 不能实时转发的原因可能是什么? 我注意到这里代码有一条 w.(http.Flusher).Flush() ,这是修复实时性的关键吗?

nnnpa31 avatar Jun 29 '23 05:06 nnnpa31

请教 io.Copy 不能实时转发的原因可能是什么? 我注意到这里代码有一条 w.(http.Flusher).Flush() ,这是修复实时性的关键吗?

io.Copy 有内存缓冲区的 缓冲区满了才会返回

geekr-dev avatar Sep 14 '23 14:09 geekr-dev