pfaffman
(Jay Pfaffman)
11.Март.2026 14:33:52
1
Это перестало работать два дня назад для размещенного клиента:
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")
Я вижу успешное использование этого ключа:
У него есть разрешения только на выполнение запросов:
Я дважды проверил, не изменился ли URL запроса снова, используя обратную разработку API Discourse .
Затем я сгенерировал новый глобальный ключ, но всё ещё получаю ошибку 400.
Я не знаю, в чём может быть проблема.
Falco
(Falco)
11.Март.2026 14:48:06
2
400 или 406?
Попробуйте добавить заголовок Accept: application/json.
pfaffman
(Jay Pfaffman)
11.Март.2026 15:15:31
3
Погодите. Я нашёл это:
{"errors":["Вы передали недопустимые параметры в запрос: limit"],"error_type":"invalid_parameters"}
Так что проблема в -F "limit=ALL"
Теперь мой вопрос: почему это перестало работать?
1 лайк
pfaffman
(Jay Pfaffman)
11.Март.2026 17:29:35
5
Спасибо большое. Однако я не смог использовать limit=ALL, даже будучи администратором с глобальным ключом. Клиенту необходимо загрузить все данные (на данный момент мне неясно, каков лимит или какого размера, скорее всего, будет этот набор).
Falco
(Falco)
11.Март.2026 17:41:23
6
Именно для этого и был создан этот PR!
Варианты: резервное копирование или использование пагинации с помощью
select * from table where id > (:page * 5000)
чтобы получать данные порциями по 5 тысяч за раз.
pfaffman
(Jay Pfaffman)
11.Март.2026 17:42:43
7
Работает!
Максимальное значение для обычного запроса, который я выполняю, равно 5000? Если да, то я определённо в безопасности.
Falco
(Falco)
11.Март.2026 17:43:44
8
pfaffman:
Это работает!
Похоже, что это 10 тысяч.
register_svg_icon "circle-exclamation"
register_svg_icon "info"
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:
3 лайка
pfaffman
(Jay Pfaffman)
11.Март.2026 17:46:37
9
Огромное спасибо. Похоже, что безлимитный тариф мне всё равно не понадобился.
Я очень рад, что смог настроить GitHub Actions для ежедневного выполнения этого запроса и загрузки результатов на FTP-сайт поставщика. За последние пару недели это дважды давало сбой. Надеюсь, что в ближайшее время это больше не повторится!
1 лайк