Http 我怎样才能慢慢发球?

Http 我怎样才能慢慢发球?,http,load-testing,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

我正在处理一个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-msimplehttpserver 8000
。我同样感兴趣的是另一个简单的命令行服务器,或者在tcp端口8000上使用一个或几个iptables命令来限制带宽的方法(或者任何可以工作的方法)。

我记得我曾经有过同样的问题,我的搜索结果显示了一个名为的Apache2模块(即mod\u bandwith)。这对我的测试很有帮助。

在Windows上,您可以使用Fiddler,这是一种HTTP代理调试工具,用于模拟非常慢的速度。可能在您使用的任何操作系统上都存在类似的工具。

我现在使用的解决方案使用的是“真正的”Web服务器,但配置lighttpd要容易得多。我已将以下文件添加到我的路径中(其位于
~/bin

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

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

在端口8000上以每秒60KB的低速率代理python文件服务器(在端口8001上)。显然,lighttpd可以用来服务文件本身,但是这个小脚本可以用来使任何http服务器变慢

我可以很容易地使用nginx。不过,我真正想要的是一个零设置解决方案,它与python-m SimpleHTTPServer一样简单,在一个充满文件的目录中。很好的解决方案,我基于此创建了一个小型Docker容器:
$ cd /path/to/some/files
$ python -m SimpleHTTPServer 8000 &
$ LIGHTTPD_THROTTLE=60 LIGHTTPD_PORT=8001 LIGHTTPD_PROXY=8000 throttle.lighttpd