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

Python实现路由器移除功能代码报内部服务器错误问题求助

代码报错原因分析
  • 类实例调用错误
    你定义的remove_node是Graph类的实例方法,必须先创建Graph类的实例对象,再通过实例调用方法。你现在直接写Graph.remove_node(name)相当于没有给方法的第一个self参数传值,会直接触发参数不匹配或者属性不存在的异常。
    正确写法示例:
# 先全局实例化Graph类
graph_instance = Graph()

@app.post("/removerouter/")
def removerouter(name: str):
    graph_instance.remove_node(name)
    return "success"
  • 遍历列表时修改原列表引发异常
    remove_node方法中直接在遍历self.edges的过程中删除列表元素,会导致列表迭代器错乱,轻则漏删匹配的边,重则直接抛出索引异常。
    建议修改为遍历列表的副本再操作原列表:
def remove_node(self, name):
    if name not in self.nodes:
        return
    self.nodes.remove(name)
    # 遍历列表副本避免异常
    for edge in self.edges[:]:
        if name in edge:
            self.edges.remove(edge)
  • 未做异常兼容处理
    list.remove()方法在目标元素不存在时会直接抛出ValueError,你没有对这个场景做兼容或者异常捕获,当传入的节点名不存在时就会触发报错导致接口返回500,可增加存在性判断或者try-except逻辑捕获处理异常。
  • FastAPI接口参数匹配问题
    POST接口如果接收的是请求体中的参数,直接写name: str默认会被FastAPI识别为查询参数,如果前端是把参数放在请求体里传递,接口会拿不到参数触发报错,需要引入Body注解声明参数位置:
from fastapi import Body

@app.post("/removerouter/")
def removerouter(name: str = Body()):
    # 后续逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:07