어떤 작업을 원하시나요?
최근 429 오류를 반환하기 시작한 커스텀 테마 컴포넌트(“Bio Book”)가 있습니다. 이 문제는 11월 26일에 시작되었습니다. 그 이전에는 정상적으로 작동했습니다.
Bio Book은 /u 라우트를 해킹하여 사용자 정보를 더 아름다운 방식으로 표시합니다. 이를 위해 각 사용자의 .json 파일에서 추가 사용자 정보도 요청했습니다. Bio Book은 429 오류를 피하기 위해 지연 로딩(lazy loading)을 사용했지만, 4일 전부터 이 기능이 작동하지 않았습니다. 4일 전에 무슨 일이 있었는지는 정확히 알 수 없으나, Discourse 팀은 레이트 리밋(rate limit)에 변경 사항이 없었다고 확인해 주었습니다.
즉, 50명 단위로 지연 로딩이 이루어지고, max_reqs_per_ip_per_10_seconds의 기본값도 50으로 설정되어 있습니다. 메인 페이지를 포함하면 이 코드는 10초 이내에 최소 51개의 요청을 발생시키므로, 속도 제한(rate limit)을 초과하게 됩니다.
와, 저도 최근에 비슷한 이유로 (카드 표시를 위해 사용자 정보를 가져오는 작업이었는데) 똑같은 문제에 부딪혔습니다. 당장 해결하려고 작은 해킹을 적용해 두었고, 혹시 제가 모르는 배치 API가 있는지 확인하거나, 그런 라우트를 구현하는 방법을 배우려고 포럼에 온 거였는데…
제 생각에는 여기에서 가장 큰 부분은 디렉터리가 사용자 카드에 포함된 모든 정보를 반환하도록 시작해야 한다는 점입니다. 어려운 점은 테마 컴포넌트가 서버를 수정할 수 없다는 것입니다. 따라서 한 번에 여러 사람의 사용자 카드를 요청할 수 있도록 하는 핵심 API 변경이 필요합니다.
진행 상황에 따라 업데이트를 공유하겠습니다. 예산에 대해 간단히 말씀드리면, 이번 작업은 무료로 진행할 예정이지만, 이 문제를 수리하는 데 약 2일간의 작업량이 소요될 것으로 추정됩니다. 이는 초기 예산을 훨씬 초과하는 수준입니다. 겉보기에는 간단해 보이지만, 내부적으로 매우 복잡한 변경 사항이 필요합니다.
@sam 님과 팀에게 감사드립니다. 정말 큰 도움이 됩니다. 핵심 API 변경 사항은 우리뿐 아니라 다른 Discourse 사용자들에게도 분명히 유용할 것입니다. Bio Book을 사용할 수 있게 되어 기쁘고, 더 합리적으로 작동하게 되어 좋습니다. 1~2주 정도는 우리에게 문제가 없습니다.
초기 예산과 수정 범위에 대한 말씀도 잘 들었습니다. 이번 작업을 무료로 해주신 것은 정말 큰 배려입니다. 감사합니다.