Pycharm FastAPI 配置在运行时工作,在添加断点时在调试时停止

Pycharm FastAPI configuration works on Run, stalls on Debug when adding a breakpoint

提问人:Samer 提问时间:11/7/2023 更新时间:11/7/2023 访问量:28

问:

我刚刚使用 Poetry 创建了一个新的 Python 项目。这很简单,这是我的pyproject.toml:

[tool.poetry]
name = "my-app"
version = "0.1.0"
description = ""
authors = ["me"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"
fastapi = "^0.104.1"
supabase = "^2.0.3"
uvicorn = "^0.24.0.post1"
pydantic = {extras = ["dotenv"], version = "^1.10.2"}

[tool.poetry.group.dev.dependencies]
mypy = "^1.5.1"
pre-commit = "^3.5.0"
pytest = "^7.4.3"
pytest-cov = "^4.1.0"

这是我的项目结构:入口点是.web_server.py

project structure

web_server.py

import uvicorn
from app.config.rest.api import create_fastapi_app

app = create_fastapi_app()

if __name__ == "__main__":  
    uvicorn.run(app)

api.py

from fastapi import FastAPI

from app.config.rest.endpoints.router import api_router


def create_fastapi_app() -> FastAPI:
    app = FastAPI(title="My API")

    app.include_router(api_router, prefix="/api")

    return app


和:router.py

from fastapi import Header, APIRouter, Depends

from app.config.rest.endpoints.meta import router as meta_router


def custom_headers(
        user_id: str = Header(examples=["postman"], convert_underscores=False),
):
    return


no_headers_router = APIRouter()
headers_router = APIRouter(dependencies=[Depends(custom_headers)])
no_headers_router.include_router(meta_router, tags=["meta"])

api_router = APIRouter()
api_router.include_router(no_headers_router)
api_router.include_router(headers_router)

我可以通过在控制台中运行来启动我的 Web 服务器。我还可以使用以下配置从 PyCharm 启动 Web 服务器:poetry run uvicorn --app-dir ./src app.web_server:app --reload

Run config

这按预期工作:

API running

如果我调试而不是运行相同的配置,它也可以工作。但是,如果我添加一个断点(无论在哪里),PyCharm 不会启动 API 并永远挂在那里。端点也无法访问,因为我猜启动过程尚未完成。例如,添加断点会导致应用永远挂起:uvicorn.run(app)

Debug configuration

如果调试配置无法启动服务器,我会假设它存在问题,但这仅在我在代码中设置任何断点时才会发生。如果没有断点,配置将按预期启动应用。

这里可能发生了什么?

调试 pycharm fastapi python-poetry

评论


答: 暂无答案