pfaffman
(Jay Pfaffman)
Mars 11, 2026, 2:33
1
Ceci a cessé de fonctionner il y a deux jours pour un client hébergé :
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\")
Je vois une utilisation réussie de cette clé :
Elle a des autorisations de lecture seule pour les requêtes :
J’ai vérifié à nouveau que l’URL de la requête n’avait pas changé en Reverse engineer the Discourse API .
Ensuite, j’ai généré une nouvelle clé globale et j’obtiens toujours une erreur 400.
Je ne sais pas quel pourrait être le problème.
Falco
(Falco)
Mars 11, 2026, 2:48
2
400 ou 406 ?
Essayez d’ajouter un en-tête Accept: application/json.
pfaffman
(Jay Pfaffman)
Mars 11, 2026, 3:15
3
Attendez. Je l’ai trouvé :
{"errors":["You supplied invalid parameters to the request: limit"],"error_type":"invalid_parameters"}
Donc le problème est -F "limit=ALL"
Alors ma question est : pourquoi cela a-t-il cessé de fonctionner ?
1 « J'aime »
pfaffman
(Jay Pfaffman)
Mars 11, 2026, 5:29
5
Merci beaucoup. Mais je n’ai pas pu utiliser limit=ALL même en tant qu’administrateur avec une clé globale. Le client doit télécharger toutes les données (je ne sais pas quelle est la limite actuelle ni quelle sera la taille probable de l’ensemble).
Falco
(Falco)
Mars 11, 2026, 5:41
6
C’est exactement ce que le PR visait à faire !
Les options sont les sauvegardes, ou la pagination avec
select * from table where id > (:page * 5000)
afin de l’obtenir par morceaux de 5k.
pfaffman
(Jay Pfaffman)
Mars 11, 2026, 5:42
7
Ça marche !
Est-ce que le maximum pour une requête normale que je fais est de 5000 ? Si oui, je suis tout à fait tranquille.
Falco
(Falco)
Mars 11, 2026, 5:43
8
pfaffman:
Ça fonctionne !
Il semble que ce soit 10k
register_svg_icon "pencil"
register_svg_icon "upload"
add_admin_route "explorer.title", "discourse-data-explorer", use_new_show_route: true
module ::DiscourseDataExplorer
PLUGIN_NAME = "discourse-data-explorer"
# This should always match the max value for the
# data_explorer_query_result_limit site setting
QUERY_RESULT_MAX_LIMIT = 10_000
end
require_relative "lib/discourse_data_explorer/engine"
after_initialize do
GlobalSetting.add_default(:max_data_explorer_api_reqs_per_10_seconds, 2)
# Available options:
# - warn
# - warn+block
2 « J'aime »
pfaffman
(Jay Pfaffman)
Mars 11, 2026, 5:46
9
Merci beaucoup. Il semble que je n’avais pas besoin de cette limite non plus.
J’ai été très satisfait d’avoir trouvé comment utiliser les actions Github pour extraire quotidiennement cette requête afin de la télécharger sur le site FTP d’un fournisseur. Elle s’est cassée deux fois au cours des deux dernières semaines. J’espère que ce sera la dernière fois avant longtemps !
1 « J'aime »