Discourse API에서 429 오류 발생

안녕하세요,

Discourse API를 사용하여 포럼에서 재미있는 응답을 하려고 하고 있습니다. 예를 들어, 누군가 스레드에서 "Linux"라고 입력하면 Discobot이 "GNU/Linux를 말씀하시는 건가요?"라고 응답하는 방식입니다.

이 기능은 잘 작동하지만, 누군가 동일한 문구로 응답하는 경우 2분 동안(거의 정확히 2분) 429错误或 빈 응답이 여러 번 반환됩니다. 그 이후에는 API가 다시 정상적으로 응답을 처리합니다.

예를 들어:

Linux
FOSS
dotnet
Java
Linux

이 경우 정상적으로 작동합니다. 그러나:

Linux
FOSS
dotnet
Linux
Linux

이 경우 오류가 발생합니다.

이 2분 창(window)이 무엇을 의미하는지 아시는 분이 있을까요? app.yml 설정을 조정하고 API 속도 제한(rate limits)을 변경해 보았지만, 효과가 없는 것 같습니다.

감사합니다!

추가 정보가 필요합니다. 429 오류를 반환하는 API 엔드포인트는 무엇인가요?

https://forum.domain.net/t/1000/highestPost.json

해당 URL에 대해 GET 요청을 수행합니다.

highestPost는 해당 스레드의 highest_post_number입니다.

이는 요청이 속도 제한(rate limit)을 받고 있다는 뜻입니다. 새 게시물을 추적하려면 이러한 방식의 폴링(pooling)은 매우 비효율적입니다. 웹훅(webhooks) 사용을 제안합니다. 이렇게 하면 새 게시물이 생겼을 때에만 반응할 수 있어, 아무 일도 일어나지 않을 때에도 폴링을 계속할 필요가 없습니다.

네, 웹훅을 한번 살펴보겠습니다.

응답 속도 제한(rate-limit)을 비활성화하는 방법을 아시나요? 이미 app.yml에서 API와 관련된 몇 가지 설정을 변경한 것으로 보입니다. 아래 링크에서 확인해 보시면 됩니다:

이것이 Nginx에서 특정 설정을 살펴봐야 하는 문제인가요?

기본적으로 추가되는 nginx 템플릿이 있습니다. app.yml의 맨 위쪽 줄 중 하나에 위치합니다. 적용되려면 레이트 리밋(rate limit) 관련 설정을 제거하고 다시 빌드해야 할 수 있습니다.

와~! 한번 시도해볼게요. 도움 주셔서 감사합니다!