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

Python开发Microsoft Teams机器人闲置2分钟后发送消息触发ConnectionResetError的问题求助

Python开发Microsoft Teams机器人闲置2分钟后发送消息触发ConnectionResetError的问题求助

大家好,我最近基于微软官方的Microsoft-Teams-Samples/samples/app-hello-world示例,用Python开发了一款Microsoft Teams机器人。初始运行一切正常,能正常接收和回复消息,但遇到了一个棘手的问题:只要消息间隔超过2分钟的闲置期,连接就会断开,抛出以下错误:

ConnectionError(ProtocolError('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')))
ClientRequestError from msrest.exceptions

但紧接着再发送一条消息,机器人又能恢复正常工作。

我的环境信息

  • 技术栈:Python 3.13、uv、uvicorn、FastAPI
  • 本地开发环境:NixOS系统 + ngrok内网穿透
  • 生产环境:AWS Ubuntu服务器 + nginx反向代理 + docker部署

我已经做过的排查和尝试

  • 反复测试确认:闲置满2分钟后必现该问题,用bot-conversation-quickstart测试也是同样结果
  • 生产环境中另一台远程服务器上的机器人也能稳定复现这个问题
  • 怀疑过是代理的长连接(keep-alive)配置问题,但不确定具体是哪部分环节出了问题
  • 用C#版本的Bot Framework示例做了相同场景测试,本地环境下无法复现(没在生产环境测C#版本)
  • 切换到手机热点网络测试,问题直接消失,无法复现

当前的困惑和临时尝试

我怀疑这个问题可能和Python版的Bot Framework SDK有关,但不知道该从哪里入手彻底解决。现在不确定服务器端需要调整哪些配置,临时写了一个错误处理函数,想问问这样处理是否合理,或者有没有更根本的修复方案?

临时错误处理代码:

async def adapter_error_handler(turn_context: TurnContext, exception):
    """Handle errors inside the Bot processing loop."""
    logger.error(f"Bot encountered an error: {str(exception)}", exc_info=True)
    try:
        if isinstance(exception, ClientRequestError):
            logger.info("Handling ClientRequestError - attempting recovery with direct method call")
            if turn_context.activity.type == ActivityTypes.message:
                # Call the specific handler instead of on_turn to avoid recursion
                await management_bot.on_message_activity(turn_context)
        return await turn_context.send_activity(ErrorMessages.GENERAL_ERROR)
    except Exception as secondary_error:
        logger.critical(
            f"Error handler failed to process exception. Original error: {str(exception)}, "
            f"Secondary error: {str(secondary_error)}",
            exc_info=True
        )

任何建议或思路都非常感谢!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 11:09:29