boostcampwm-2022 / web18-PRV

논문 인용관계를 밤하늘의 별 처럼 표시해보자 🌟-🌟
https://paperef.com
143 stars 3 forks source link

13-6 [BE] [Fix] Request batcher 로직 수정 #89

Closed leesungbin closed 1 year ago

leesungbin commented 1 year ago

개요

  1. GitHub Actions Fail 오류 수정
  2. Request batcher에 대한 로직을 수정
    • 파란 상자 안에 있는 부분이 추가되었습니다. image
    • 키워드로 검색한 논문별로 reference까지 하나씩 탐색하던 로직을 삭제했습니다.
    • 사용자로부터 reference에 대한 doi를 직접 검색요청받았을 때, doiQueue에 검색 요청이 들어가며 해당 논문의 reference까지 탐색합니다. image

작업사항

리뷰 요청사항

leesungbin commented 1 year ago

제가 이해한 것이 맞다면 현재 setInterval을 통해 runBatch를 주기적으로 실행하고, Batcher라는 클래스에 내부적으로 blocked와 실행 여부를 변수로 관리하는 듯 합니다.

이를 통해 실행할 때마다 blocked와 running 여부를 체크 하고 실행을 하는 것으로 보입니다. (blocked와 running 이 true이면 return) 이는 큐에서 전의 요청이 정상적으로 response를 받고 Too Many Request를 피하기 위한 방법으로 이해를 했는데 blocked와 running 여부를 매번 확인하는 것이 아니라 그냥 외부 api를 요청하고 await 후 response를 받은 후에 해당 response의 유효성을 검증하는 방식을 적용할 수 없나요?

가끔씩 crossref가 응답을 빠르게 해주는 경우가 있어서요, 이 친구가 빠른 속도로 응답해버릴 때, 응답이 올 때마다 다음 요청을 보내는 식으로 하면 rate limit이 걸릴 수 있겠더라구요. (ex doi로 검색할 때) 물론 대부분의 경우 응답속도가 매우 느리기 때문에 말씀하신대로 할 수 있을 것 같습니다. crossref에 찌르는 최소한의 시간 단위를 지정하기 위해 이렇게 구현했습니다!