반응형

python 5

[python] aiomysql > excutemany 로 multi insert 쿼리 효율성 개선

비동기 기반인 FastAPI 프레임워크에서 mysql을 비동기적으로 사용하기 위해 사용하는 aiomysql에서는 Cursor 클래스 내 executemany 메서드로 다중 insert 문을 사용할 수 있게 지원합니다. 대부분의 기능에서는 excute 메서드로 단건 처리를 많이 하게되어 사용할 일이 거의 없었는데, 이번에 한 번에 많은 데이터를 insert 하게 되는 기능을 만들면서 executemany 의 효용성에 대해 체감을 좀 하게 되었습니다. 🚔 테스트 테스트 코드를 작성해볼게요. 테스트 환경 python 3.11.0 aiomysql 0.2.0 db : 8.0.mysql_aurora.3.04.1 db spec : AWS RDS db.t3.medium (core 1, vCPU 2, 4GB RAM) 먼..

개발 2024.04.04

[Streamlit] 변수를 기억하고 싶다면 Session State를 사용하십시다.

이전 글(AWS Polly(폴리)를 이용한 TTS(Text To Speech, 음성 합성) 구현 (3))에서 Streamlit과 AWS Polly를 사용해서 음성 합성 서비스를 구현해 봤는데요. 이때 아쉬웠던 것 중 하나가 aws key 들을 각 페이지를 넘어 다닐 때마다 새로 입력해줘야 하는 거였어요. Streamlit이 재실행(rerun) 됐을 때나 페이지를 넘어 다닐 때 저장된 변수들의 상태가 유지되지 않기 때문인데요, 이를 위해 Streamlit에서는 Session State 기능을 제공합니다. Streamlit의 세션이란? We define access to a Streamlit app in a browser tab as a session. For each browser tab that conn..

개발 2024.01.26

[AWS] boto3 클라이언트로 Cloudwatch 등 각 서비스 사용량 가져오기 with python

이전 글 - 2024.01.24 - [개발] - [AI 음성 생성] AWS Polly(폴리)를 이용한 TTS(Text To Speech, 음성 합성) 구현 (3) - Streamlit 프로젝트 이전 글에서 AWS polly를 활용한 음성합성 프로젝트를 하나 만들어봤었는데요. 실제로 이 서비스를 프로덕션에서 운영하면서 사용자들에게 비용을 지불할 수 있게 하려면, 사용량에 대한 체크가 필요해요. 프리 티어에서 월 몇 백만 글자를 제공한다고 해도, 어느 정도 소진되고 있는지는 알아야 비용을 책정할 수 있으니까요! 그래서 AWS 에서 각 서비스의 사용량에 대한 정보를 제공하는 API 가 있는지 살펴보다가, Boto3에서 Cloudwatch 클라이언트를 통해 데이터를 제공한다는 걸 알게 됐어요. 자세한 내용은 B..

개발 2024.01.24

[AI 음성 생성] AWS Polly(폴리)를 이용한 TTS(Text To Speech, 음성 합성) 구현 (3) - Streamlit 프로젝트

이번에는 이전 글들에 이어서 Streamlit을 이용한 AI 음성 생성 프로젝트를 간단히 만들어보려고 해요. 더보기 - 2024.01.21 - [개발] - [AI 음성 생성] AWS Polly(폴리)를 이용한 TTS(Text To Speech, 음성 합성) 구현 (1) feat. 유튜브 쇼츠도 이걸로 만들어요 - 2024.01.22 - [개발] - [AI 음성 생성] AWS Polly(폴리)를 이용한 TTS(Text To Speech, 음성 합성) 구현 (2) - python 코드 구현 Streamlit은 파이썬으로 이루어진 프레임워크로 간단한 코드로 적당한 UI를 생성할 수 있게 해 줘요. 프론트엔드 경험이 없어도 차트나 표, 메뉴, 폼 등 간단하면서 필수적인 UI들을 쉽게 만들 수 있게 해 줘서, A..

개발 2024.01.24

[FastAPI] pydantic @root_validator 통해 유효성 검증

API 를 개발하게 되면 Request 가 잘 들어왔는지 검증하는 로직을 추가하게 됩니다. request 모델로 받겠다고 정의한 schema 에서 service 로직이 아닌 request 자체에 대한 유효성 검증을 대부분 처리하고 있는데, 이때 @root_validator 를 사용하면 보다 효율적으로 처리가 가능합니다. 아래와 같이 요청을 받는 router 가 존재하고,# router.py @router.put( "/entity/capacity", response_model=ApiRes, summary="Update Capacity of an Abstract Entity", ) async def update_entity_capacity( req: EntityCapacityUpdateReq, ... ) -..

개발 2023.04.12
반응형