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

FastAPI在PyCharm正常启动失败,Debug与Docker可运行问题求助

FastAPI + Azure Application Insights:正常启动无Uvicorn日志/服务未启动的排查方案

针对你遇到的「添加Azure Application Insights后,本地正常启动无Uvicorn日志、服务未启动,但Debug和Docker模式正常」的问题,可按以下步骤排查解决:

1. 调整Application Insights初始化时机

AI的同步初始化操作可能阻塞Uvicorn的启动流程,建议将初始化逻辑移至FastAPI的startup异步事件中,避免占用主线程:

from fastapi import FastAPI
from azure.monitor.opentelemetry import configure_azure_monitor
import asyncio

app = FastAPI()

@app.on_event("startup")
async def init_azure_insights():
    # 用异步线程执行AI初始化,不阻塞Uvicorn事件循环
    await asyncio.to_thread(
        configure_azure_monitor,
        connection_string="你的连接字符串"
    )

if __name__ == "__main__":
    import uvicorn
    uvicorn.run("main:app", host="0.0.0.0", port=8000, log_level="info")

2. 修复日志被拦截的问题

Azure AI的日志处理器可能覆盖了Uvicorn的日志配置,导致启动日志无法输出:

  • 显式设置Uvicorn日志级别,确保日志能正常打印:
    import logging
    # 强制开启Uvicorn的INFO级别日志
    logging.getLogger("uvicorn").setLevel(logging.INFO)
    logging.getLogger("uvicorn.access").setLevel(logging.INFO)
    
  • 检查AI配置是否禁用了现有日志器,若使用opentelemetry相关配置,确保disable_existing_loggers=False:
    from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
    logger_provider = LoggerProvider(disable_existing_loggers=False)
    

3. 排查依赖版本冲突

对比你之前正常项目的依赖版本,重点检查以下包的版本差异:

  • azure-monitor-opentelemetry/azure-applicationinsights
  • uvicorn、starlette、fastapi
  • opentelemetry-api、opentelemetry-sdk

可尝试:

  • 降级Azure AI相关包至稳定版本(比如azure-monitor-opentelemetry==1.0.0)
  • 升级Uvicorn至最新兼容版本(uvicorn>=0.23.2)
  • 用pip freeze > current.txt导出当前依赖,和正常项目的依赖文件对比,逐个卸载重装差异包验证。

4. 捕获AI初始化异常

若AI初始化失败(比如缺少环境变量),可能静默阻塞程序运行,添加异常捕获确保Uvicorn能正常启动:

try:
    configure_azure_monitor(connection_string="你的连接字符串")
except Exception as e:
    print(f"Azure Insights初始化失败: {str(e)}")
    # 不终止程序,继续启动服务

5. 检查启动环境变量

Debug模式下PyCharm会自动加载.env文件或配置的环境变量,但正常启动时可能缺失AI所需的APPLICATIONINSIGHTS_CONNECTION_STRING等变量。可在启动前手动设置:

# Windows
set APPLICATIONINSIGHTS_CONNECTION_STRING="你的连接字符串" && python main.py

# Linux/Mac
export APPLICATIONINSIGHTS_CONNECTION_STRING="你的连接字符串" && python main.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:55:13