Я использую размещённую версию Discourse/CDCK для настройки своего сайта. В данный момент я работаю над переносом обсуждений из экспорта Slack: немного предобрабатываю текст, генерирую заголовок с помощью трансформера Hugging Face, а затем добавляю посты в Discourse через API.
Я видел на другом форуме (к сожалению, не могу найти ту тему), что использование API для массовых операций не считается лучшей практикой. Кроме того, я постоянно упираюсь в ограничения скорости (rate limits) и другие проблемы. Я пробовал менять настройки, но всё равно продолжаю упираться в эти лимиты безрезультатно. Есть ли у кого-нибудь идеи, как массово импортировать какой-либо файл, который я могу создать на основе сообщений из Slack?
Обработанные (дружественные для Discourse) сообщения из Slack находятся в базе данных, и у меня есть скрипт, который извлекает их и отправляет в API Discourse. Я могу легко изменить его так, чтобы он создавал файл, который Discourse сможет обработать и массово создать темы.
Обычно вы используете скрипт импорта на сервере, которым вы управляете, или на тестовом экземпляре. Вам нужно будет перевести ваш сайт в режим только для чтения, скачать резервную копию с вашего размещённого экземпляра, выполнить необходимые действия, создать резервную копию, загрузить её на размещённый экземпляр и запросить восстановление этой резервной копии. Если ваш сайт работает в режиме онлайн, и один день в режиме только для чтения не является проблемой, сделайте это.
Если время в режиме только для чтения действительно критично, и у вас всего несколько тысяч сообщений, напишите скрипт так, чтобы между вызовами были задержки, а также предусмотрите повторные попытки при отказе.
Если у вас десятки тысяч сообщений, вам нужно будет убедить себя и всех остальных, что один день в режиме только для чтения не является действительно критичным.
Смотрите scripts/import_scripts в исходном коде для примеров.
Я подтягиваю всего несколько сотен за раз, поэтому, скорее всего, просто добавлю задержки, чтобы не поднимать локальный экземпляр. Мы постепенно переносим более длинные диалоги с конкретными людьми, чтобы наполнить наш сайт Discourse ценными беседами, которые больше нельзя найти через Slack.
Будет ли CDCK когда-нибудь поддерживать какой-либо способ запуска этих скриптов массового импорта или, возможно, предоставит возможность массового импорта через API?
Я сомневаюсь, так как это довольно нишевый запрос и потенциально очень опасный. Случайно, я вот-вот начну работу над плагином, который будет принимать URL-адрес электронной таблицы Google Docs с листами для категорий, пользователей, тем и сообщений, и импортировать их, но я ожидаю, что он будет доступен только для самохостинга и корпоративных клиентов.
Справедливо, я добавлю обработку исключений и буду пропускать импорт, если внешний ID уже существует. Этот рабочий процесс отлично подходит, так как мы импортируем всего несколько сотен за раз, а затем вручную исправляем ошибки. Я просто хотел убедиться, что не совершаю действий, которые могут привести к нежелательному состоянию.
Тем не менее, этот плагин выглядит отличной альтернативой! Надеюсь, вы предложите возможность включить его на месяц за плату, а затем вернуться к тарифному плану для команд.
Если вы используете API, то у вас есть множество защитных механизмов, предоставляемых Rails, чтобы убедиться, что вы не делаете ничего действительно опасного.
Только что загрузил 500 сообщений. Это заняло некоторое время, но я просто сократил время ожидания до 1 секунды для постов и тем, а также добавил паузу в одну секунду после каждого вызова создания, и это решило проблему. Загрузка примерно 500 сообщений заняла около 4 часов.
Это определённо правильный путь. Это даст нам много работы для анализа и модерации на какое-то время.
Кстати, всё это сейчас находится в закрытом Discourse, поэтому мы сначала приведём всё в порядок, прежде чем открывать доступ.
Ещё раз спасибо за всю твою помощь! С нетерпением жду новый плагин!