pfaffman
(Jay Pfaffman)
1
2일 전부터 호스팅 고객에서 이 기능이 작동하지 않고 있습니다:
HTTP_STATUS=$(curl -s -o /tmp/discourse_response.json -w "%{http_code}" \
-X POST "https://HOSTNAME/admin/plugins/discourse-data-explorer/queries/3/run" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: $DISCOURSE_API_KEY" \
-H "Api-Username: $DISCOURSE_API_USER" \
-F "limit=ALL")
해당 키가 성공적으로 사용된 것을 확인할 수 있습니다:
쿼리 전용 권한이 설정되어 있습니다:
Reverse engineer the Discourse API를 참고하여 쿼리 URL이 다시 변경되지 않았는지 두 번 확인했습니다.
그 후 새로운 전역 키를 생성했지만 여전히 400 오류가 발생합니다.
문제가 무엇일지 알 수 없습니다.
Falco
(Falco)
2
400이 아니라 406 오류인가요?
Accept: application/json 헤더를 추가해 보세요.
pfaffman
(Jay Pfaffman)
3
잠깐. 찾았어요:
{"errors":["You supplied invalid parameters to the request: limit"],"error_type":"invalid_parameters"}
즉, 문제는 -F "limit=ALL"입니다.
그렇다면 제 질문은, 왜 갑자기 작동하지 않게 됐을까요?
pfaffman
(Jay Pfaffman)
5
정말 감사합니다. 하지만 전역 키를 가진 관리자 권한으로도 limit=ALL을 사용할 수 없었습니다. 클라이언트는 모든 데이터를 다운로드해야 하는데, 현재 제한 값이 무엇인지 또는 데이터 세트의 크기가 얼마나 될지 정확히 파악하지 못하고 있습니다.
Falco
(Falco)
6
그것이 바로 이 PR이 달성하고자 했던 목표입니다!
옵션은 백업을 사용하거나, 다음을 통해 페이지네이션을 수행하는 것입니다:
select * from table where id > (:page * 5000)
이렇게 하면 5,000개 단위로 데이터를 받아올 수 있습니다.
pfaffman
(Jay Pfaffman)
7
동작합니다!
제가 수행하는 일반 쿼리의 최대치가 5000건인가요? 그렇다면 저는 확실히 안전합니다.
pfaffman
(Jay Pfaffman)
9
정말 감사합니다. 어차피 그 무제한 옵션은 필요 없었던 것 같습니다. 
GitHub Actions를 이용해 이 쿼리를 매일 가져와서 벤더의 FTP 사이트에 업로드하는 방법을 알아낸 것이 매우 만족스러웠습니다. 지난 몇 주 사이에 두 번이나 문제가 발생했네요. 이번이 정말 마지막이길 바라며, 앞으로 오랫동안 안정적으로 작동하길 바랍니다!