我怎样才能慢慢提供HTTP?

Sin*_*ion 7 http load-testing

我正在开发一个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);
Run Code Online (Sandbox Code Playgroud)

但这感觉就像其他人已经遇到的问题.是否有一种简单的方法来提供具有荒谬的低带宽上限的静态文件,缺少像apache或nginx这样的满级服务器.

我正在研究linux,到目前为止我测试的方式是python -m SimpleHTTPServer 8000在一个充满文件的目录中.我同样对另一个简单的命令行服务器感兴趣,或者在tcp端口8000上使用一个或几个iptables命令进行带宽限制(或任何可行的方法).

Sin*_*ion 7

我现在要使用的解决方案是使用"真正的"网络服务器,但更容易配置一个,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 )))
Run Code Online (Sandbox Code Playgroud)

这是一个lighttpd配置文件,充当localhost的反向代理; 源端口和目标端口以及服务器总最大带宽作为环境变量给出,因此可以调用它:

$ cd /path/to/some/files
$ python -m SimpleHTTPServer 8000 &
$ LIGHTTPD_THROTTLE=60 LIGHTTPD_PORT=8001 LIGHTTPD_PROXY=8000 throttle.lighttpd
Run Code Online (Sandbox Code Playgroud)

以代理与低每秒60KB在端口8001上显然8000端口蟒蛇文件服务器,lighttpd的可以用来提供文件服务本身,而是这个小脚本可以用来做任何 HTTP服务器慢