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

使用Waitress服务Webhook应用时出现NoneType无get属性错误

解决Webhook重启后data.get('payload').get('to')报错问题

可能的报错原因

  • 请求数据缺失关键字段:重启后对方发送的Webhook请求可能调整了格式,比如data字段为空、payload字段不存在,直接链式调用.get()会触发AttributeError(当data为None时,无法调用.get()方法)。
  • 非JSON格式请求:部分请求未正确设置Content-Type: application/json,导致request.json为None,后续调用.get()会报错。
  • 服务器配置变更:重启Waitress后,请求解析相关配置被修改,无法正确解析JSON请求体。

修复代码

@app.route(f'/outbound', methods=["POST"])
def outbound():
    # 逐层兜底,避免空值调用方法
    request_json = request.json or {}
    data = request_json.get('data') or {}
    payload = data.get('payload') or {}
    to_ = payload.get('to')

    # 校验必要字段,同时记录异常请求便于排查
    if not to_:
        app.logger.error(f"Invalid request received: {request.data.decode('utf-8')}")
        return {"error": "Required field 'to' is missing or invalid"}, 400

    # 后续业务逻辑
    return {"status": "processed"}

排查步骤

  • 打印完整请求内容:在函数开头添加日志,记录原始请求体,确认实际收到的数据格式是否符合预期。
  • 核对对方Webhook文档:确认对方是否更新了payload格式,是否需要调整字段获取路径。
  • 检查Waitress配置:确保重启后的服务器配置没有禁用JSON解析,且能正确处理application/json类型的请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:20:31