You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

搭建本地慢速HTTP服务器以测试客户端504超时错误

关于模拟慢速HTTP服务器测试超时的问题解答

1. 你用的httpbin.org/delay/10是什么工具

你使用的是httpbin,这是一个专门为HTTP客户端调试设计的工具,能模拟各种HTTP场景:比如返回指定状态码、设置响应延迟、返回自定义Header/Body等,/delay/N接口就是它提供的核心功能之一,用来模拟服务器延迟N秒后响应。

2. 如何在本地搭建同类简易工具

有两种实用方式:

  • 用Docker运行官方httpbin镜像:直接拉取镜像并映射本地8000端口,命令如下:
    docker run -p 8000:80 kennethreitz/httpbin
    
    启动后访问http://localhost:8000/delay/10,效果和线上完全一致。
  • 自己写轻量Flask服务:写个极简的Flask应用实现延迟响应,代码如下:
    from flask import Flask
    import time
    
    app = Flask(__name__)
    
    @app.route('/delay/<int:seconds>')
    def delay_response(seconds):
        time.sleep(seconds)
        return f"Server delayed {seconds} seconds"
    
    if __name__ == '__main__':
        app.run(port=8000, debug=False)
    
    保存为delay_server.py,运行python3 delay_server.py即可,访问对应路径就能触发延迟。

3. 能否调整python3 -m http.server实现慢速响应?

可以,通过自定义请求处理器实现。默认的http.server基于SimpleHTTPRequestHandler,我们可以继承它并重写请求处理方法,添加延迟逻辑:

from http.server import HTTPServer, SimpleHTTPRequestHandler
import time

class SlowRequestHandler(SimpleHTTPRequestHandler):
    def do_GET(self):
        # 自定义延迟时间,比如10秒
        time.sleep(10)
        # 调用父类方法完成正常响应
        super().do_GET()

if __name__ == '__main__':
    server = HTTPServer(('', 8000), SlowRequestHandler)
    print(f"Slow server running on port 8000")
    server.serve_forever()

保存为slow_http_server.py,运行python3 slow_http_server.py,访问http://localhost:8000就会触发10秒延迟。如果要让客户端触发504错误,只需将客户端的超时阈值设置为小于服务器的延迟时间(比如客户端设5秒超时,服务器延迟10秒),客户端就会因等待超时抛出504或自定义超时异常。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:35:04