문제
사이드 프로젝트 진행 중 FastAPI를 실행할 때 전체 코드가 두 번 실행 되는 문제가 발생했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# main.py
import uvicorn
from fastapi import FastAPI
...
APP = FastAPI()
print("hello world!")
...
if __name__ == "__main__":
uvicorn.run("main:APP", host="localhost", port=1234)
위의 코드를 실행시키면 hello world!가 두 번씩 찍혔다.
해결
해당 문제는 __main__과 main.py이 두 번 실행되는 문제였다.
uvicorn.run 을 할 때, app 인자를 파일명이 아닌 위에서 지정해준 APP으로 실행시키면 된다.
1
2
3
4
5
6
7
# main.py
...
if __name__ == "__main__":
uvicorn.run(APP, host="localhost", port=1234)