[Django] openAI connection pool적용기 3회차
오늘은 pool 을 진짜 진짜 넣어볼 예정이다..
어제 벤치마크 달려다가 포기했는데, 멘토님께서 센트리를 연결했으니 그거 사용하면 된다고 하셨다.
그래서 추천 api를 요청하는 간단한 테스트를 작성하고 센트리에서 확인해보려고한다.
이런식으로 만들고 sentry 로 시간을 재봤다.
그런데 sentry에서 안보인다...
안적힌다..
저번에 sentry 초기화를 함수로 설정했던 게 문제가 있는 듯하다.
대략 흐름도를 보니 pytest 는 settings 파일만 참고하고 다른 settings 파일을 참고하지 않아서 init 이 되지 않는 듯 했다.
그래서 다음과 같이 수정해주었다.
이렇게 수정하고 돌려본다...!
잡히긴 한다!
그런데 jwt 헤더 관련때문에 일단 제대로된 결과는 안나왔으니 이제 pytest 를 돌려서 확인해본다.
해결하다 한 세월 걸릴 것 같다.. 생각보다 sentry 에 나타나는데 시간이 걸린다. 한 1분정도..?
그래서 그냥 뷰하나를 대략 만들고 비교해보려고 한다.
그리고 공식문서에서 지원해준다던 create_and_poll은 async 에 대한 poll 이였다. 내가 원하는 connection pool 이 아니였다..^^ ㅎㅎ (지금보니 철자도 달랐네...)
httpx 를 사용하면 된다고 하니 한번 찾아보자.
https://www.python-httpx.org/advanced/resource-limits/
Resource Limits - HTTPX
Resource Limits You can control the connection pool size using the limits keyword argument on the client. It takes instances of httpx.Limits which define: max_keepalive_connections, number of allowable keep-alive connections, or None to always allow. (Defa
www.python-httpx.org
https://github.com/openai/openai-python/blob/main/src/openai/_constants.py
openai-python/src/openai/_constants.py at main · openai/openai-python
The official Python library for the OpenAI API. Contribute to openai/openai-python development by creating an account on GitHub.
github.com
멘토님 항상 감사합니다...
어떻게 사용하는건지 사실 감이 잘 안온다. 열심히 서치를 해보자.
[Spring] 커넥션 풀(Connection pool)이란?
커넥션 풀(Connection pool)에 대해서 그래도 알고 사용하자. 쉽게 알고 갔으면 좋겠습니다.
linked2ev.github.io
오... 대략 이해가 되었다.
사용하는게 그리 어렵진 않아보여서 일단 적용해보자
https://github.com/openai/openai-python/issues/874
Unclear how to use the new AsyncClient at scale - memory leaks or timeouts · Issue #874 · openai/openai-python
Confirm this is an issue with the Python library and not an underlying OpenAI API This is an issue with the Python library Describe the bug I have a containerized FastAPI server. When I create new ...
github.com
여기를 참고했다!
이거.. 그대로 넣어보자...!
이 두개를 참고해서 아래와 같이 만들어줬다.
10분정도 동안 풀링이 유지될 것이다. 논리상...
v2는 connection 풀링을 적용한 버전이고 안붙어 있는 버전은 풀링을 하지 않은 버전이다.
이제 테스트를 진행해보자!
약 5번 정도 recommend 요청을 보내고 시간을 측정해보려고 한다.
일단 간단하게 기본버전이다. 한번 평균을 내보자...! 지원해주는게없나..>?
일단 하나를 들어갔을 때의 모습이었다. 보면 openai 쪽에서 답변을 받기까지 4.54초가 소요되었다.
총 차례대로 3.88, 4.97s, 3.56s, 4.54s, 4.45s, 4.04s 등 4초 언저리로 나왔다.
그러면 이제 connection 풀링을 적용하고 5번을 보내보자!
의외로 시간이 더 걸렸다....?
들어가보니까 어째서인지 openai 가 7.36, 11.96, 5.33, 4.54 로 걸렸다.
근데 12초는 내 문제가 아닐 것 같아서 다시 해본다..!
3.88, 4.69, 5.17, 8.46(처음 커넥션), 정도로.. 오히려 안하는게 더 나은 결과를 보였다..
흠 어째서 인걸까.. 속도를 더 빠르게 내려면 다른 방법을 찾아봐야할 것 같다..