Files
docs-fastapi/docs/ko/docs/tutorial/debugging.md
T
The Scheduler a42b1ff04e
Issue Manager / issue-manager (push) Has been cancelled
Build Docs / changes (push) Has been cancelled
Build Docs / langs (push) Has been cancelled
Build Docs / build-docs (push) Has been cancelled
Build Docs / docs-all-green (push) Has been cancelled
Conflict detector / main (push) Has been cancelled
Test Redistribute / test-redistribute (fastapi) (push) Has been cancelled
Test Redistribute / test-redistribute (fastapi-slim) (push) Has been cancelled
Test Redistribute / test-redistribute-alls-green (push) Has been cancelled
Test / lint (push) Has been cancelled
Test / test (pydantic-v1, 3.10) (push) Has been cancelled
Test / test (pydantic-v1, 3.11) (push) Has been cancelled
Test / test (pydantic-v1, 3.13) (push) Has been cancelled
Test / test (pydantic-v1, 3.8) (push) Has been cancelled
Test / test (pydantic-v1, 3.9) (push) Has been cancelled
Test / test (pydantic-v2, 3.10) (push) Has been cancelled
Test / test (pydantic-v2, 3.11) (push) Has been cancelled
Test / test (pydantic-v2, 3.12) (push) Has been cancelled
Test / test (pydantic-v2, 3.13) (push) Has been cancelled
Test / test (pydantic-v2, 3.14) (push) Has been cancelled
Test / test (pydantic-v2, 3.8) (push) Has been cancelled
Test / test (pydantic-v2, 3.9) (push) Has been cancelled
Test / coverage-combine (push) Has been cancelled
Test / check (push) Has been cancelled
Label Approved / label-approved (push) Has been cancelled
FastAPI People Contributors / job (push) Has been cancelled
FastAPI People Sponsors / job (push) Has been cancelled
Update Topic Repos / topic-repos (push) Has been cancelled
FastAPI People / job (push) Has been cancelled
Test / test (pydantic-v1, 3.12) (push) Has been cancelled
Sync fastapi docs from b5ca1324 on 2025-12-07
2025-12-07 21:35:20 +00:00

2.7 KiB

디버깅

예를 들면 Visual Studio Code 또는 PyCharm을 사용하여 편집기에서 디버거를 연결할 수 있습니다.

uvicorn 호출

FastAPI 애플리케이션에서 uvicorn을 직접 임포트하여 실행합니다

{* ../../docs_src/debugging/tutorial001.py hl[1,15] *}

__name__ == "__main__" 에 대하여

__name__ == "__main__"의 주요 목적은 다음과 같이 파일이 호출될 때 실행되는 일부 코드를 갖는 것입니다.

$ python myapp.py

그러나 다음과 같이 다른 파일을 가져올 때는 호출되지 않습니다.

from myapp import app

추가 세부사항

파일 이름이 myapp.py라고 가정해 보겠습니다.

다음과 같이 실행하면

$ python myapp.py

Python에 의해 자동으로 생성된 파일의 내부 변수 __name__은 문자열 "__main__"을 값으로 갖게 됩니다.

따라서 섹션

    uvicorn.run(app, host="0.0.0.0", port=8000)

이 실행됩니다.


해당 모듈(파일)을 가져오면 이런 일이 발생하지 않습니다

그래서 다음과 같은 다른 파일 importer.py가 있는 경우:

from myapp import app

# Some more code

이 경우 myapp.py 내부의 자동 변수에는 값이 "__main__"인 변수 __name__이 없습니다.

따라서 다음 행

    uvicorn.run(app, host="0.0.0.0", port=8000)

은 실행되지 않습니다.

/// info | 정보

자세한 내용은 공식 Python 문서를 확인하세요

///

디버거로 코드 실행

코드에서 직접 Uvicorn 서버를 실행하고 있기 때문에 디버거에서 직접 Python 프로그램(FastAPI 애플리케이션)을 호출할 수 있습니다.


예를 들어 Visual Studio Code에서 다음을 수행할 수 있습니다.

  • "Debug" 패널로 이동합니다.
  • "Add configuration...".
  • "Python"을 선택합니다.
  • "Python: Current File (Integrated Terminal)" 옵션으로 디버거를 실행합니다.

그런 다음 FastAPI 코드로 서버를 시작하고 중단점 등에서 중지합니다.

다음과 같이 표시됩니다.


Pycharm을 사용하는 경우 다음을 수행할 수 있습니다

  • "Run" 메뉴를 엽니다
  • "Debug..." 옵션을 선택합니다.
  • 그러면 상황에 맞는 메뉴가 나타납니다.
  • 디버그할 파일을 선택합니다(이 경우 main.py).

그런 다음 FastAPI 코드로 서버를 시작하고 중단점 등에서 중지합니다.

다음과 같이 표시됩니다.