首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >FastAPI输出日志到控制台被阻塞问题排查

FastAPI输出日志到控制台被阻塞问题排查

作者头像
雪飞鸿
发布2026-08-05 08:33:56
发布2026-08-05 08:33:56
270
举报
文章被收录于专栏:me的随笔me的随笔

问题如下:

用FastAPI做项目时,为方便本地调试,将日志输出到控制台,但发现日志输出有时会卡住。

排查过程:

原本以为是因为日志同步输出到控制台导致的,改为异步方式后,时不时卡住的问题并没有解决。后面发现Windows下,控制台默认开启了快速编辑模式,在该模式下,鼠标点击了控制台后就进入了编辑模式,日志输出也就卡住了。

找到原因后,解决起来也就简单了,启动项目时关闭快速编辑模式即可:

代码语言:javascript
复制
def _disable_quick_edit_mode() -> None:
    """禁用 Windows 控制台的快速编辑模式,避免点击控制台时阻塞输出"""
    if sys.platform != "win32":
        return
    try:
        import ctypes
​
        kernel32 = ctypes.windll.kernel32
        # 获取标准输入句柄
        handle = kernel32.GetStdHandle(-10)  # STD_INPUT_HANDLE
        # 获取当前控制台模式
        mode = ctypes.c_ulong()
        kernel32.GetConsoleMode(handle, ctypes.byref(mode))
        # 禁用快速编辑模式 (0x0040),启用扩展标志 (0x0080)
        ENABLE_QUICK_EDIT = 0x0040
        ENABLE_EXTENDED_FLAGS = 0x0080
        mode.value = (mode.value & ~ENABLE_QUICK_EDIT) | ENABLE_EXTENDED_FLAGS
        kernel32.SetConsoleMode(handle, mode)
    except Exception:
        pass  # 非 Windows 环境或无控制台时忽略

完整代码可参考:logger

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档