오늘 할 일: 갈고 닦기
[debug] 파이썬 비동기 미작동 해결하기

📌 오류 제목 파이썬 코드에서 async를 적용했지만 실제 서비스에서는 비동기 작업이 적용되지 않은 건 📍 발생 환경 OS: Ubuntu 22.04Python 3.10.12, langchain 0.3.12, FastAPI 0.115.6, uvicorn 0.34.0  💥 오류 내용 비즈니스 로직에 해당하는 파이썬 코드들을 모두 async 비동기 처리했으나,실제 서비스에서는 여러 창을 띄우고 실험했더니 적용되지 않은 현상을 발견비동기 처리가 되지않고 이전 작업을 모두 마쳐야 다음 작업이 실행되는 것으로 확인함때문에 사용자는 앞단의 처리가 모두 완료될 때까지 대기해야 하는 문제 사항 발생정확히 따지자면 오류는 아니고 컴퓨터에 대한 이해가 부족해서 발생한 문제 😓  🔍 문제 원인 분석 비즈니스 로직은 ..

article thumbnail
[IR] 유사 키워드 매칭하기: python rapidfuzz 사용하기

들어가며 RAG 프로세스를 구상하던 중이었습니다. 사용자가 작성한 질문에서 A'라고 물어봤는데, 이거를 A로 단어를 바꾸어서 검색할 수 없나? A는 미리 정해놓은 범위 내에서 찾게 하고 싶은데 어떻게 바꿀 수 있을까..?  문제 상황은, 서비스 사용자들이 A를 A' 또는 A''라고 쓰기도 하고, AB라고 작성하기도 한다는 것입니다. 실제로 검색 대상인 문서에는 A라고 명확하게 정의된 데 반해, 사용자들은 각자 편하게 부르고 싶은 대로 작성하기도 하고 오타로 인해 잘못 작성하기도 한다는 것이죠.    사용자마다 가지각색으로 작성된 단어들을 표준화된 단어로 변경해주기 위해서는 사전 검색이 필요했습니다. 다만 사용자들이 어떤 식으로 작성할지를 구상해서 미리 모아두는 것이 실제로는 어렵죠. 때문에 어떤 단어가 ..

article thumbnail
[python] tenacity 라이브러리를 이용해 코드 재실행하는 방법

들어가며 파이썬으로 운영을 위한 프로그램을 만들었습니다. 프로그램을 동작시키던 도중 예기치 못한 오류가 발생하여 재실행이 필요한 때는 언제든 발생할 수 있죠. 실제 운영 프로그램을 설계하면 API라던지 DB라던지 파이썬의 메인 프로그램과 다른 여러 환경들이 얽혀있다는 점을 잘 아실 겁니다. 이렇게 파이썬 밖에 있는 환경이 얽혀있을 때는 특히 통신 오류가 발생할 수 있는데요. 정확한 원인을 알 수 없는 오류가 발생하여 잠시 대기한 후에 재실행을 하면 다시 잘 되는 경우도 있죠. 이런 경우를 대비하기 위해 Tenacity 라이브러리를 적용하여 쉽게 코드를 재실행 할 수 있습니다. Tenacity 사용하기 Tenacity는 예외가 발생하는 경우에 다시 함수를 실행시켜서 사용자가 원하는 결과를 받고 안정적으로 ..

article thumbnail
[Tips] 파이썬에서 구글 드라이브의 대용량 파일 다운로드 받기

상황 및 문제점 구글 드라이브에 올라온 대용량 파일을 직접 다운로드 후 서버에 업로드 하려니 너무 오래 걸리고, 중간에 끊기는 문제가 발생함 해결방법 터미널에서 아래 wget 명령어를 사용하여 직접 다운로드를 받을 수 있습니다. wget --load-cookies ~/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies ~/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id={FILEID}' -O- | sed -rn 's/.*confirm=([0-9A-Za-..

article thumbnail
[pandas] style로 데꾸(데이터프레임 꾸미기)하는 방법

들어가며 오랜만에 파이썬을 사용하다가 유용해보이는 기능을 발견하여 공유하고자 합니다. 바로 pandas의 style 기능입니다. 데이터 분석을 하면 데이터프레임에 찍힌 숫자나 문자와 같은 값들을 보면서 무엇이 제일 크고 작은지, 관심있게 보려는 값이 어디있는지 찾아야하는 일이 생기죠. 이때 내가 원하는 값들이 쉽게 눈에 띄지 않은 경험을 한 번쯤은 해보셨을 것 같습니다. 행, 열이 많아지면 주의 깊게 봐야하는 값이 어디에 있는지 더욱 찾기 어려워지기도 하죠. 이런 일들을 해결하기 위해 데꾸, 데이터프레임 꾸미기를 활용할 수 있습니다. 판다스의 공식 문서를 보며 유용할 것 같은 일부 함수들을 가져와 소개 드립니다. 비어있는 값, nan 강조하기 import numpy as np import pandas a..

article thumbnail
[Dash] 파이썬에서 Dash를 이용한 대시보드 구축하기

최근에 프로젝트를 수행하던 중, 머신러닝 모델의 결과를 실시간으로 확인하기 위해 웹을 개발해야할 필요가 생겼다. 단순하게 시나리오를 이용해 입력값이 이렇게 들어가면 결과가 이렇습니다! 라며 캡처를 통해 보여줄 수도 있었다. 그래도 웹을 좀 이용해서 실제 서비스처럼 보여주면 더 좋을 것 같다는 의견에 따라 화면 개발을 시작했다. 웹 개발은 당연히 해본 적은 없지만.. dash 라이브러리를 이용하면 파이썬에서도 쉽게 구축할 수 있다고 해서 도전~~! dash 소개 Dash는 상호작용하는 웹 어플리케이션을 만드는 데 사용되는 파이썬 프레임워크이다. plotly에서 만들었으며, Flask, Plotly.js와 React.js 라이브러리 위에서 작성된다. 웹 개발을 위해 사용된다고 알려진 HTML, CSS 혹은 ..

article thumbnail
[Python] 코딩도장: 데코레이터로 매개변수의 자료형 검사하기

문제 출처: https://dojang.io/mod/page/view.php?id=2433 파이썬 코딩 도장: 42.7 연습문제: 데코레이터로 매개변수의 자료형 검사하기 다음 소스 코드에서 데코레이터 type_check를 작성하세요. type_check는 함수의 매개변수가 지정된 자료형(클래스)이면 함수를 정상적으로 호출하고, 지정된 자료형과 다르면 RuntimeError 예외를 발생시 dojang.io 다음 소스 코드에서 데코레이터 type_check를 작성하세요. type_check는 함수의 매개변수가 지정된 자료형(클래스)이면 함수를 정상적으로 호출하고, 지정된 자료형과 다르면 RuntimeError 예외를 발생시키면서 '자료형이 다릅니다.' 에러 메시지를 출력해야 합니다. 여기서 type_chec..

article thumbnail
[GeoPandas] GeoPandas를 이용한 좌표 데이터 다루기

최근 좌표를 포함하는 데이터를 전처리하면서 geopandas라는 라이브러리를 접하게 되어, 사용방법을 간단하게 포스팅하고자 한다. GeoPandas https://geopandas.org/en/stable/ GeoPandas 0.12.0 — GeoPandas 0.12.0+0.g31f8e6a.dirty documentation GeoPandas 0.12.0 GeoPandas is an open source project to make working with geospatial data in python easier. GeoPandas extends the datatypes used by pandas to allow spatial operations on geometric types. Geometric op..

article thumbnail
[pandas] map과 replace의 차이

판다스로 데이터프레임을 사용하면서 새로운 컬럼을 만들어야할 상황이 생겼다. 예를 들어 기존 값이 '1'이면 '01'로 대체하는 식의 작업이 필요했다. 이미 알고 있던 지식을 총동원하여 map을 적용하면 값을 변경된 새로운 컬럼을 만들 수 있을 것이라 판단했다. 그리고 실패했다.. 이유를 알아보았다. import pandas as pd df = pd.DataFrame({'a': ['x', 'y', 'z']}) df 예시로 사용할 데이터 프레임으로, a 컬럼에는 x, y, z 값이 들어있다. 이 값들을 딕셔너리를 이용해 맵핑하여 새로운 값으로 전환하려고 했다. x는 xx로, y는 yy로, w는 ww로 전환하고, 만약 딕셔너리에 기존 값이 키로 존재하지 않으면, 값을 그대로 보존하기를 바랬다. df['a_ma..

[pandas] idxmax, idxmin: 행, 열별 최댓값 및 최솟값의 인덱스 찾기

idxmax와 idxmin은 행별로 또는 열별로 최댓값 및 최솟값의 인덱스를 반환하는 메소드입니다. 어떤 열에서 최댓값을 갖는 데이터(인스턴스)의 인덱스를 추출할 때 유용하게 사용할 수 있을 것 같습니다.. parameter axis: 0(행, 행의 정보를 압축한다는 의미로 열별 결과를 반환) 또는 1(열, 열의 정보를 압축한다는 의미로 행별 결과를 반환)(default=0) skip: 결측값을 무시할지 여부를 설정(default=True), False인 경우 결측치를 포함한 행/열에 대해 NaN을 반환함 예시를 위해 사용할 임시 데이터를 만들었습니다. idx = ['row1','row2','row3', 'row4'] col = ['col1','col2','col3', 'col4'] data = [[20..

반응형