ホームページ  >  記事  >  バックエンド開発  >  Go で HTTP GET リクエスト中の帯域幅の使用を制限する方法は?

Go で HTTP GET リクエスト中の帯域幅の使用を制限する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 12:12:30384ブラウズ

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()__: 指定されたバイト数を読み取ります (datachunk ) 制御された間隔 (タイムラプス) で応答本文から取得されます。
  • __os.Stdout__: チャンクが出力される標準出力を表します。

このコードは、帯域幅を手動で制限する方法を示しています。 http.Get() メソッドのコア機能を維持しながら消費します。

以上がGo で HTTP GET リクエスト中の帯域幅の使用を制限する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。