提问人:Samer 提问时间:11/7/2023 更新时间:11/7/2023 访问量:28
Pycharm FastAPI 配置在运行时工作,在添加断点时在调试时停止
Pycharm FastAPI configuration works on Run, stalls on Debug when adding a breakpoint
问:
我刚刚使用 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
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
这按预期工作:
如果我调试而不是运行相同的配置,它也可以工作。但是,如果我添加一个断点(无论在哪里),PyCharm 不会启动 API 并永远挂在那里。端点也无法访问,因为我猜启动过程尚未完成。例如,添加断点会导致应用永远挂起:uvicorn.run(app)
如果调试配置无法启动服务器,我会假设它存在问题,但这仅在我在代码中设置任何断点时才会发生。如果没有断点,配置将按预期启动应用。
这里可能发生了什么?
答: 暂无答案
评论