pydantic의 BaseModel을 상속 받은 클래스들. request를 정제 한다. 라우터의 각 엔드 포인트들이 전달 받는 매개변수는 주로 이렇게 BaseModel을 상속한 Schema 클래스들이다. 나는 편의상 각 클래스 이름을 ~Model로 끝내도록 한다.데이터
FastAPI로 개발 하면, Depends 를 사용해 의존성 주입을 하게 된다. 하지만 이땐 함수를 전달 해야 하지, 함수의 값을 전달 하는게 아니다.이런 식으로 코드를 작성하면 "\~~is not a callbale object"라는 오류를 만나게 될 것이다. 위와
FastAPI로 개발을 해도, 외부의 다른 API를 요청 할 때가 많다. 그럴 땐 httpx를 이용해 아래와 같이 구현 하면 된다.
aws의 ec2 환경에서 아래 명령어로 tkinter를 설치하면 해결 된다.sudo apt-get install python3-tktkinter는 파이썬의 GUI 프레임워크인데, 리눅스 환경엔 설치 되지 않았을 수도 있기 때문이다.
FastAPI로 개발 할 때, Depends 함수를 이용해 의존성을 주입한다. 하지만 Depends는 router 데코레이터로 장식된 함수 안에서만 써야 한다.⚠️위 데코레이터로 장식 된 함수 안에서만 쓸 수 있다 ⚠️https://github.com/tian
이렇게 데이터베이스 호출 부를 구성 해놓고 다른 파일에서 get_db함수를 통해 데이터베이스에 접근 할 때, 간혹 AttributeError: 'generator' object has no attribute 'query'라는 에러를 만날 때가 있다.그럴 땐 get_db
①: BackgroundScheduler 객체를 생성한다. (이하 객체)②: 반복 실행 하고 싶은 함수를 @객체 이름.scheduled_job(...) 데코레이터로 장식 한다. ③: 객체의 start() 함수를 실행 하면 된다.이렇게 하면 서버의 동작을 블락 하지 않고
이 코드는 BackgroundTask에 long_task 함수를 할당 하지만 비동기적으로 처리 되지 않는다. long_task 함수의 내용이 다 처리 될 때 까지 다른 동작은 블락 된다.BackgroundTask에 등록 할 함수는 동기로 선언해야, starlette이
uvicorn을 실행 할 때, --workers 명령어로 몇개의 스레드를 생성 할 지 지정 할 수 있다. 이 값을 지정하지 않으면, 싱글 스레드로 동작해 비동기 혹은 병렬 작업이 원하는대로 진행 되지 않을 수 있다.
def로 선언 된 함수도 비동기적으로 동작한다공식 문서에 따르면, 별도의 쓰레드 풀에서 동작 한다고 한다그렇지만 async def로 선언 한 함수에서 펜딩 오래 걸리는 동작이 있으면 이건 서버를 블락 할 수 있다.외부 쓰레드 풀이 아니라 FastAPI 자신이 돌고 있는