>  기사  >  백엔드 개발  >  Go에서 HTTP GET 요청 중 대역폭 사용량을 제한하는 방법은 무엇입니까?

Go에서 HTTP GET 요청 중 대역폭 사용량을 제한하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 12:12:30487검색

How to Limit Bandwidth Usage During an HTTP GET Request in Go?

Go에서 HTTP 요청 대역폭 제어

질문:

Go 초보자로서 , HTTP GET 요청 중에 대역폭 소비를 어떻게 제한할 수 있습니까?

배경:

분석:

당신은 발견했습니다 대역폭 사용량에 대한 낮은 수준의 제어를 제공하는 mxk/go1/flowcontrol 라이브러리. 그러나 이를 http.Get() 메서드와 통합하려면 기본 리더에 액세스하는 방법을 이해해야 합니다.

해결책:

타사 패키지에는 편리한 래퍼가 있지만 , 대역폭 제어의 기본 사항을 이해하는 것이 도움이 될 수 있습니다. 다음은 접근 방식을 보여주는 간단한 구현입니다.

<code class="go">package main

import (
    "io"
    "net/http"
    "os"
    "time"
)

// Set data chunk size (in bytes) and time interval (in seconds)
var datachunk int64 = 500
var timelapse time.Duration = 1

func main() {
    // Initiate HTTP GET request
    response, _ := http.Get("http://google.com")

    // Read response in controlled intervals
    for range time.Tick(timelapse * time.Second) {
        // Read a chunk of data into stdout
        _, err := io.CopyN(os.Stdout, response.Body, datachunk)
        if err != nil {
            break
        }
    }
}</code>

설명:

  • __io.CopyN()__: 지정된 바이트 수를 읽습니다(데이터 청크 )를 제어된 간격(시간 경과)으로 응답 본문에서 가져옵니다.
  • __os.Stdout__: 청크가 인쇄되는 표준 출력을 나타냅니다.

이 코드는 대역폭을 수동으로 제한하는 방법을 보여줍니다. http.Get() 메서드의 핵심 기능을 유지하면서 소비합니다.

위 내용은 Go에서 HTTP GET 요청 중 대역폭 사용량을 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.