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

用Python搭建Mock Server模拟故障响应,开发重试重连逻辑

问题描述

我的数据提供商的HTTP刷新Token接口会返回格式错误的JSON字符串,导致我的软件从另一个URL的WebSocket连接断开。正常预期的处理逻辑是:刷新Token失败时重试,若重试仍失败则重新向授权HTTP端点发送登录请求,再从头建立WebSocket连接。

我想快速复现这个故障来开发异常处理和重试恢复代码,但目前复现一次要等两天,而且我无权修改提供商服务器,已经联系过支持但还没解决。请问能不能把提供商授权端点的特定URL/URI重定向到本地服务器,以此模拟该故障响应?

可行方案及实现步骤

完全可以通过本地重定向+模拟故障的方式快速复现问题,以下是几种可靠的实现方式:

1. 本地DNS劫持(简单快速)

  • 修改本地hosts文件,把提供商授权域名映射到本地IP(比如127.0.0.1)
  • 在本地启动一个简易HTTP服务器(Python、Node.js都行),监听对应端口,返回格式错误的JSON响应(比如{invalid json)
  • 注意:只劫持目标域名,别影响其他服务访问

2. 反向代理工具(灵活可控)

  • 用mitmproxy或nginx这类工具做反向代理:
    • 配置规则匹配目标刷新Token接口的URI
    • 当请求命中该URI时,直接返回预设的错误JSON,不用转发到真实服务器
    • 其他请求正常转发,不影响软件其他功能

3. 代码层面Mock(精准可控)

  • 在软件代码里加个测试开关,开启后绕过真实接口,直接调用本地Mock函数返回错误JSON
  • 适合需要精准控制故障场景的开发阶段,不用改网络配置

模拟故障的示例代码(Python)

用Flask快速搭个本地服务器返回错误JSON:

from flask import Flask

app = Flask(__name__)

# 匹配提供商刷新Token的接口路径
@app.route('/auth/refresh-token', methods=['POST'])
def mock_refresh_failure():
    # 返回格式错误的JSON字符串
    return "{invalid json payload that breaks parsing}", 200

if __name__ == '__main__':
    # 监听80端口,和真实接口端口保持一致
    app.run(host='0.0.0.0', port=80)

注意事项

  • 测试完记得恢复网络配置(比如改回hosts文件、关闭代理)
  • 确保本地服务器的端口、路径和真实提供商接口完全一致
  • 可以多模拟几种故障场景(比如500错误、请求超时、不同格式的错误JSON),覆盖更多异常情况

内容的提问来源于stack exchange,提问作者Ori Kovacsi-Katz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:25:19