ホームページ >バックエンド開発 >Golang >Go で HTTP Get 帯域幅を制限する方法: カスタム アプローチ?

Go で HTTP Get 帯域幅を制限する方法: カスタム アプローチ?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 03:45:30202ブラウズ

How to Limit HTTP Get Bandwidth in Go: A Custom Approach?

Go で HTTP Get 帯域幅を制限する方法

Go の初心者として、消費される帯域幅を制御する必要があるシナリオに遭遇する可能性があります。 http.Get() リクエストによって。一般的な解決策の 1 つは、mxk/go1/flowcontrol などのサードパーティ パッケージを利用することです。ただし、基礎となるメカニズムをより深く理解するために、この記事では簡単なカスタム アプローチを提供します。

帯域幅を制限するには、HTTP 応答本文からデータを読み取る速度を制限する必要があります。提供されたコード スニペットでは:

<code class="go">package main

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

var datachunk int64 = 500       //Bytes
var timelapse time.Duration = 1 //per seconds

func main() {
    responce, _ := http.Get("http://google.com")
    for range time.Tick(timelapse * time.Second) {
        _, err := io.CopyN(os.Stdout, responce.Body, datachunk)
        if err != nil {
            break
        }
    }
}</code>

2 つの変数を定義します:

  • datachunk は、応答本文から読み取られるデータ チャンクのサイズをバイト単位で決定します。
  • タイムラプスは、データ チャンクを読み取る間隔を指定します。

メイン関数は次の手順を実行します。

  1. HTTP GET リクエストを送信し、応答を応答に保存します。変数。
  2. 指定されたタイムラプスを待機する無限ループに入ります。
  3. ループ内で、io.CopyN() を使用して応答本文からデータのチャンクを読み取ります。チャンクのサイズはデータチャンクによって定義され、タイムラプスにより、指定された間隔で 1 つのチャンクのみが読み取られることが保証されます。

このシンプルなアプローチにより、HTTP GET リクエストの帯域幅を制限する柔軟な方法が提供されます。 。必要に応じてデータチャンクとタイムラプスを調整して、目的の帯域幅制限を達成できます。

以上がGo で HTTP Get 帯域幅を制限する方法: カスタム アプローチ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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