猿问

如何在 golang 中限制从服务器上传和下载的速度?

如何在 golang 中限制从服务器上传和下载的速度?


我正在编写一个 golang 服务器来允许用户上传和下载文件。而且文件很大,大约 1GB 字节。我想将上传和下载速度限制为(例如)1MB/s(当然可以配置)。


下面是我的上传代码:


func uploadFile(w http.ResponseWriter, r *http.Request) {

    file, _, err := r.FormFile("file")


    if err != nil {

        http.Error(w, err.Error(), 500)

        return

    }


    defer file.Close()


    os.MkdirAll(`e:\test`, os.ModePerm)

    out, err := os.Create(`e:\test\test.mpg`)

    if err != nil {

        http.Error(w, err.Error(), 500)

        return

    }


    defer out.Close()


    _, err = io.Copy(out, file)

    if err != nil {

        http.Error(w, err.Error(), 500)

    }

}


慕桂英3389331
浏览 190回答 2
2回答

SMILET

您可以查看本文中PuerkitoBio/throttled介绍的的实现:throttled,一个 Go 包,它实现了各种策略来控制对 HTTP 处理程序的访问。开箱即用,它支持请求的速率限制、请求的恒定间隔流和内存使用阈值以授予或拒绝访问,但它还提供扩展其功能的机制。速率限制并不是您所需要的,但可以为实现类似功能提供一个好主意。
随时随地看视频慕课网APP

相关分类

Go
我要回答