-
[FastAPI, PostgreSQL] postgresql://와 postgresql+asyncpg:// 의 차이📚 개발백과 2024. 10. 18. 17:06728x90
글을 작성하게 된 이유:
FastAPI 에서 Session 생성을 하기 위해 postgresql url 을 주입하는 도중에 여러 프로젝트의 소스코드마다
postgresql://로 시작하는 url도 있고 postgresql+asyncpg:// 로 시작하는 url도 있었는데 그 차이가 궁금했다.
그리고 이것 때문에 프로젝트 실행하는 과정에서 삽질을 하기도 했다.
두 URL은 주로 동기 방식과 비동기 방식의 데이터베이스 연결 및 쿼리 실행 방식에 차이점이 있다.
postgresql://
이 url은 psycopg2와 같은 동기식 드라이버를 사용해 PostgreSQL 에 연결한다.
이게 표준 연결 문자열이다. (당연해보이죠?)
이는 파이썬*의 일반적인 동기 실행 모델을 따르기 때문에, 데이터베이스 작업을 수행하는 동안 해당 작업이 완료될 때까지 프로그램의 실행이 블로킹(대기 상태)된다.
*참고로 파이썬은 동기 방식으로 동작하도록 설계된 언어이다. 물론 asyncio 등 라이브러리로 비동기 방식을 지원하긴하지만 일반적으로는 그러하다.
postgresql+asyncpg://
asyncpg라는 비동기 드라이버를 사용해 PostgreSQL 에 연결한다.
비동기 드라이버를 사용하므로, 데이터베이스 작업이 비동기적으로 실행된다.
즉, 데이터베이스 작업을 기다리는 동안 다른 작업을 수행할 수 있어 리소스를 보다 효율적으로 사용할 수 있다. 예를 들면 서버의 반응성과 처리량이 높아진다거나...
이 url은 FastAPI와 같은 비동기 프레임워크와 함께 사용할 때 효과적이며, 동시에 많은 연결과 요청을 처리해야하는 애플리케이션에 적합하다
🤔 FastAPI가 비동기 프레임워크라고요?!
네. 그렇다고 합니다...
FastAPI는 uvicorn과 함께 비동기적인 형태로 동작합니다.. 더보기(나중에 더 알아보자는 뜻~^^)
728x90'📚 개발백과' 카테고리의 다른 글
오프라인 상태에서 cURL 사용하기 (0) 2024.10.01 [Docker] 컨테이너 실행 시 외부에서 .yml 주입하기 (1) 2024.09.26 [Spring] 유효성 검사에서 @Valid 와 setField 중 무엇이 먼저 실행될까 (1) 2024.08.08 [Naver Cloud] SSL 인증서 中 Chrome 호환성 정리 (2024.08 기준) (0) 2024.08.04 [TWA] 웹으로 구현한 FCM을 앱에서 띄우기 (0) 2024.08.04