Python (96) 썸네일형 리스트형 FastAPI + Pydantic: 데이터 검증 ORM-DTO # model_validate # from_attributes FastAPI에서 데이터 검증을 위해 Pydantic을 주로 사용. Pydantic을 통해 검증을 하는 과정에서 ORM 객체를 DTO로 변환하는 과정을 살펴보자. 1. FastAPI의 request body와 response model request에서 어떠한 속성을 받을것인지는 router함수 안에 Body를 통해 정의. * 예시코드 from fastapi import APIRouter, Body router = APIRouter() @router.post("/test") async def api_test( name: str = Body(...) ) pass * Pydantic으로 모델 클래스를 만들어서 데이터 검증을 거치고, Depends로 의존성함수를 주입해서 관리할 수 있다. (가독성, 독립성 유.. Python: None and False / False and None / None or False # bool 일반적인 프로젝트 내에서 None and False 라는 코드를 하드코딩으로 직접 작성하는 경우는 거의 없을 것이다. 그러나, 넘어온 변수가 의도치 않게 None으로 넘어온 경우 위와 같이 None and False 등의 상황이 벌어질 수 있다. 그리고 이 결과값을 변수로 받은 후에 로직 상에서 처리가 되는 경우 None이냐 False냐에 따라서 다르게 동작하기도 하고, 특히 Pydantic으로 데이터 타입을 검증할 때 에러가 발생하기도 한다. 1. None and False -> None False and None -> False ---> and 연산일 경우 단락평가(short circuit evaluation)에 따라서 None, False가 앞에 있으면 앞부분만 보고 판단 단, 그 판단된 결과가 무.. Python: class __slots__ __slots__ Python class에서 __slots__에 사용할 attributes를 명시하면, 해당 클래스로 생성되는 인스턴스는 __dict__, __weakref__ 를 갖지 않고 생성. 기본적으로 python에서 class의 인스턴스는 __dict__에 네임스페이스를 갖는데, __slots__가 __dict__ 대신 사용될 수 있다. 언제? 왜? 기본적으로 모든 인스턴스들은 __dict__에 딕셔너리 형태로 네임스페이스를 갖는다. 딕셔너리 형태로 가짐으로써, 인스턴스가 생성된 이후에 인스턴스 attributes들이 생성, 수정, 삭제가 가능하다. 그리고 각각의 인스턴스들이 생성, 수정, 삭제가 가능해야 하고, attirubtes들을 독립적으로 고유하게 가져야 하므로 모든 instance들이 .. FastAPI, Javascript: EventSource Example EventSource HTTP를 통해서 server-sent-events (SSEs)를 받기 위한 인터페이스 페이지 새로고침 없이 real-time(실시간)으로 서버에서 데이터를 받을 때 유용하게 쓸 수 있다. 아래는 오픈소스 g6의 데이터 베이스가 설치되는 과정에서 Python 코루틴을 활용하여 백엔드 FastAPI에서 프론트엔드 Javascript로 페이지 리로딩 없이 설치 정보를 전달하는 예제 @router.get("/process") async def install_process(request: Request): async def install_event(): db_connect = DBConnect() engine = db_connect.engine SessionLocal = db_connect.. FastAPI: WebSocket Example 1. Websocket을 통해 서버로부터 일정 주기로 데이터 받아오기 * fastapi와 websocket 사용을 위한 uvicorn[standard] 설치 pip install fastapi "uvicorn[standard]" * main.py from fastapi import FastAPI, WebSocket import asyncio app = FastAPI() @app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept() counter = 0 while True: counter += 1 await websocket.send_json({"message": f"Update #{count.. SQLAlchemy: db pool 관리 DB connection pool from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine( self._url, poolclass=QueuePool, pool_size=20, max_overflow=40, pool_timeout=70, pool_recycle=60, ) poolclass - 어떠한 connection pool을 사용할지에 대한 옵션 일반적으로 QueuePool을 사용하며, 옵션에 별도 명시하지 않을 경우 default 값이기도 하다. QueuePool - 재사용 가능한 pool 사용 - 다수의 동시적인 connection 허용 (multiple concurrent da.. Python: 서버 부하테스트 - locust python script로 간단하게 서버 부하테스트를 할 수 있는 library 사용법이 간단하고, 브라우저를 통해 분석 그래프까지 제공해준다. 설치: pip install locust locustfile.py 작성 from locust import HttpUser, task, between class WebsiteUser(HttpUser): wait_time = between(1, 5) @task def load_test(self): self.client.get("/your-endpoint") 테스트할 서버를 실행시키고, locust도 함께 실행시켜주자 locust는 기본적으로 8089 포트로 연결된다. 나는 fastapi 서버를 실행시키고 있고, fastapi는 기본적으로 8000포트로 열린다. fa.. request.scope vs request.headers in FastAPI # ChatGPT Q. in Python FastAPI, How can I see the request user's prefix whethere http or https? A. In FastAPI, you can determine whether a request uses HTTP or HTTPS by inspecting the request object. The request object contains various information about the incoming HTTP request, including the scheme which indicates whether the request was made using HTTP or HTTPS. To access the request object in FastAPI,.. 이전 1 2 3 4 5 ··· 12 다음