我正在开发一个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上使用一个或几个iptables命令进行带宽限制的方法(或任何可行的方法)同样感兴趣。
答案 0 :(得分:6)
我现在要使用的解决方案是使用“真正的”网络服务器,但更容易配置一个,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配置文件,充当localhost的反向代理;源端口和目标端口以及服务器总最大带宽作为环境变量给出,因此可以调用它:
$ cd /path/to/some/files
$ python -m SimpleHTTPServer 8000 &
$ LIGHTTPD_THROTTLE=60 LIGHTTPD_PORT=8001 LIGHTTPD_PROXY=8000 throttle.lighttpd
在端口8000上以低于每秒60KB的速率代理端口8000上的python文件服务器。显然,lighttpd可用于为文件本身提供服务,但是这个小脚本可用于制作任何 http服务器缓慢
答案 1 :(得分:1)
在Windows上,您可以使用Fiddler作为HTTP代理调试工具来模拟非常慢的速度。也许在您正在使用的操作系统上存在类似的工具。
答案 2 :(得分:0)
我记得我曾经有同样的问题,我的搜索出现了一个名为 mod_bw 的Apache2模块(mod_bandwith)。这对我的考试很有帮助。