9

私はhttpクライアントで作業していますが、完了するまでに時間がかかるリクエストでテストしたいと思います。私は確かに私のニーズに合うPythonスクリプトを思い付くことができました。

def slow_server(environ, start_response):
    with getSomeFile(environ) as file_to_serve:
        block = file_to_serve.read(1024);
        while block:
            yield block
            time.sleep(1.0)
            block = file_to_serve.read(1024);

しかし、これは他の人がすでに遭遇した問題のように感じます。apacheやnginxのようなフルスケールサーバーが不足しているのに、帯域幅の上限が非常に低い静的ファイルを提供する簡単な方法はありますか?

私はLinuxに取り組んでおり、これまでテストしてきた方法は、python -m SimpleHTTPServer 8000提供するファイルでいっぱいのディレクトリを使用することです。私は、別の単純なコマンドラインサーバー、またはtcpポート8000​​(または機能するもの)で1つまたはいくつかのiptablesコマンドを使用して帯域幅制限を行う方法にも同様に興味があります。

4

3 に答える 3

12

今のところ私が使用しているソリューションは「実際の」ウェブサーバーを使用していますが、lighttpdを設定する方がはるかに簡単です。次のファイルをパスに追加しました(の中にあります~/bin

#! /usr/sbin/lighttpd -Df

server.document-root = "/dev/null"
server.modules = ("mod_proxy")
server.kbytes-per-second = env.LIGHTTPD_THROTTLE
server.port = env.LIGHTTPD_PORT
proxy.server  = ( "" => (( "host" => "127.0.0.1", "port" => env.LIGHTTPD_PROXY )))

これは、ローカルホストへのリバースプロキシとして機能するlighttpd設定ファイルです。送信元ポートと宛先ポート、およびサーバーの合計最大帯域幅は環境変数として指定されるため、次のように呼び出すことができます。

$ cd /path/to/some/files
$ python -m SimpleHTTPServer 8000 &
$ LIGHTTPD_THROTTLE=60 LIGHTTPD_PORT=8001 LIGHTTPD_PROXY=8000 throttle.lighttpd

ポート8000​​でPythonファイルサーバーをプロキシし、ポート8001で毎秒60KBの低さを実現します。明らかに、lighttpdを使用してファイル自体を提供できますが、この小さなスクリプトを使用して、任意のhttpサーバーを低速にすることができます。

于 2012-12-01T05:48:21.783 に答える
1

Windowsでは、HTTPプロキシデバッグツールであるFiddlerを使用して、非常に遅い速度をシミュレートできます。おそらく、使用しているOSに同様のツールが存在します。

于 2012-12-01T00:03:03.640 に答える
0

私はかつて同じ質問をしたことを覚えています、そして私の検索はmod_bw(つまりmod_bandwith)という名前のApache2モジュールを見つけました。それは私のテストに役立ちました。

于 2012-11-30T23:58:31.497 に答える