본문 바로가기
소프트웨어 마에스트로/BackEnd(Django)

[Django] sentry span 문제 해결하기 + todo 버그 수정

by alpakaka 2024. 11. 1.

저번에 sentry 관련으로 스팬이 너무 많이 차서 문제를 해결해보았었다.

저번에 해결한 사항은 issue 제외한 모든 메세지 지우기

그런데 이번에도 또 스팬이 꽉꽉 들어차있었다.

이거는 이제 다른 곳에서 문제가 발생하고 있는 것 같았다.

그래서 스윽 보니, 헬스 체크하는데에서 5초에 한번씩 헬스체크를 진행하는데 이거를 저장하다보니 발생한 문제 같았다.

헬스체크 풍년

5초에 1번이면.. 1분에 12번... 1시간에 720번... 하루에 4300 ...흠

그래서 헬스체크하는 것은 trace 로 쫓지 않도록 바꿔보았다.

https://forum.sentry.io/t/ignore-healthchecks-url/11986/2

 

Ignore healthchecks url

I think I resolved it and I figured I’d post here my solution: function createSentry(app) { Sentry.init({ environment: process.env.NODE_ENV, dsn: config.sentryDsn, integrations: [ new Sentry.Integrations.Http({ tracing: true }), new Tracing.Integrations.

forum.sentry.io

여기를 참고했다.

 

근데 보다 보니 Python code 가 아니길래 공식문서를 찾아주었다.

https://docs.sentry.io/platforms/python/configuration/filtering/

 

Filtering | Sentry for Python

Learn more about how to configure your SDK to filter events reported to Sentry.

docs.sentry.io

 

그리고 추가적인 문제가 있는데, 계속 Localhost 에 로깅이 찍히는 문제가 있었다.

로직상으로 Onestep_dev 나 onestep_prod 에 찍혀야하는데 왜 계속 다 Localhost 에 찍히나 했더니 경로 문제였다.

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Update version.txt
        run: |
          VERSION=$(TZ=Asia/Seoul date +'%Y.%m.%d.%H.%M.%S')  # 한국 시간대 사용
          echo "onestep_prod@${VERSION}" > version.txt

이런식으로 작성해놓아서 project 안에 만든 상황이 아니였던 거고..

그러다보니 빈 파일만 참고하는 상황이 연출되었던 것이었다. ㅎㅎ

 

그래서 version.txt -> backend/version.txt 로 변경해주었다.

 

그리고 추가적으로 아래와 같은 게 계속 발생했다.

이거 계속찍힌다.

문제인 이유

1. 우리는 uvicon 쓰고 있어서 asgi 인데 왜 w?

2. 왜 저렇게 많이찍힘..?

어쨋든 무슨 문제인지 모르겠기 때문에 음. 일단 아래의 내용을 적용해본다.

https://docs.sentry.io/platforms/python/integrations/asgi/

 

ASGI | Sentry for Python

Learn about the ASGI integration and how it adds support for ASGI applications.

docs.sentry.io

근데 보니까 flask 관련 코드였다... ㅎㅎㅎ

그래서 Django 로 변경해본다 .ㅎ

인데 딱히 적절한 코드를 못 찾아서 아래의 링크를 참고했다.

https://docs.sentry.io/platforms/python/integrations/asyncio/

 

asyncio | Sentry for Python

Learn about the asyncio integration and how it adds support for applications the asyncio module.

docs.sentry.io

얘를 더 사람들이 많이 사용하는 것 같길래..

일단 이렇게 해봤다.

어쨌든.. init 파일을 다음과 같이 설정해주었다.

흠흠... 이제 한번 시도를 해본다.

스웨거를 시도해도 안 찍힌다. 헬스체크 안 찍힐 것으로 예상된다.

따봉

 

두번째로 해결할 문제는 다음과 같다.

 

{
todo_id : 1,
is_completed : true/ false}

이런식으로 요청을 보냈을 때 true 는 잘 작동되는데 false 에서는 에러가 난다고 했다.

그래서 나도 보내보았더니 안된다.

왜이런가 살펴봐야겠다.

일단 여기에서 안걸린다. Is_completed 가 분명히 있는데도 안걸린다. 이유를 모르겠다.

false 인 것과 연관이 있을 것 같은데 한번 물어봐야겠다.

 

알아낸 결과는 위의 코드에서 is_completed 값이 false 여서.. 그대로 조건문을 걸리지 않았던 것 같다.

그래서 아래와 같이 수정해주었다..^^b

잘 해결했다.

이제 subtodo 나 category?(있는지 확인해서 바꿔주면 될 듯 싶다.)

그리고 pytest 를 돌렸는데..

ㅎㅎ 에러가 나면 안되는 곳에서 에러가 발생한다.

보니까.. lexorank library 가 뭔가 문제가 있었다 ㅎㅎ...

그래도 뭐.. 일단 해결해야지..

허헣

after 를 하나, before 를 하나 같은 값이 나온다...ㅎㅎㅎㅎ

다른 라이브러리를 사용해야할 것 같다... ㅎㅎㅎ..

그런 상황이다 ㅎㅎ

 

insert_to_bottom=True

이 설정 문제인가 해서 빼고 진행해본다.

음 안된다.

둘다 같은 값이 나온다. 만들다가 만 것 같다. 0.1.3 일때 알아봤어야했나....

그래서 다른 라이브러리 사용해야할 것 같다.

그래서 저번에 프론트가 사용했던 Typescript 을 바탕으로 대애애애략 만들어보려고한다.

https://github.com/DibyaranjanSathua/lexorank

 

GitHub - DibyaranjanSathua/lexorank: LexoRank using Python

LexoRank using Python. Contribute to DibyaranjanSathua/lexorank development by creating an account on GitHub.

github.com

https://github.com/kvandake/lexorank-ts

 

GitHub - kvandake/lexorank-ts: A reference implementation of a list ordering system like JIRA's Lexorank algorithm

A reference implementation of a list ordering system like JIRA's Lexorank algorithm - kvandake/lexorank-ts

github.com

https://github.com/kvandake/lexorank-dotnet

 

GitHub - kvandake/lexorank-dotnet: A reference implementation of a list ordering system like JIRA's Lexorank algorithm

A reference implementation of a list ordering system like JIRA's Lexorank algorithm - kvandake/lexorank-dotnet

github.com

이 레포도 참고하려고 한다. 파이썬 레포는 사용하려 했는데 mit 없고, 시간도 없다.

이러고 싶지 않지만 어쩌겠는가....

c++, ts, python 배우고 럭키비키잖아.......

 

일단 이정도로 마무리하는 걸로 한다...!