gpt4 book ai didi

go - 使用 http.ResponseBody 时测量上传速度

转载 作者:数据小太阳 更新时间:2023-10-29 03:04:53 25 4
gpt4 key购买 nike

在使用http.ResponseWriter 上传大量数据时,有没有办法衡量客户端的下载速度?

上下文更新:我正在为 blob 存储编写一个流式下载端点,它以 block 的形式存储 blob。文件非常大,因此加载和缓冲整个 blob 是不可行的。能够监控缓冲区状态、写入的字节数或类似内容将允许更好地安排 block 下载。

例如当 Write() 响应时,有没有办法检查已经排队的数据量?

上下文示例,但不使用文件对象。

func downloadHandler(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
// Open some file.
f := os.Open("somefile.txt")

// Adjust the iteration speed of this loop to the client's download speed.
for
{
data := make([]byte, 1000)
count, err := f.Read(data)
if err != nil {
log.Fatal(err)
}
if count == 0 {
break
}
// Upload data chunk to client.
w.Write(data[:count])
}
}

最佳答案

您可以实现自定义 http.ResponseWriter 来测量发送的字节数并计算吞吐量。

可能已经有一些包可以做类似的事情。谷歌找到this one (我没用过)。

关于go - 使用 http.ResponseBody 时测量上传速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43608294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com