Я мигрирую большой объем контента — около 15 тысяч новостных статей — в Discourse через API. В этих темах есть ссылки на изображения. Изображения были загружены в облачное хранилище (blob storage) и доступны публично.
В большинстве тем изображения отображаются корректно: они скачиваются по прямой ссылке и загружаются в Discourse, как и ожидалось. Однако некоторые либо остаются просто ссылками в теме, либо, по какой-то причине, отображаются как битые изображения.
Чистая установка Discourse, только для тестирования миграции
Хранение изображений в S3
Проблем не возникает, когда я создаю посты вручную как пользователь и загружаю изображения. Проблема проявляется только при миграции постов через API, то есть массово и в быстром темпе (использую параметр skip_validations=true). На данный момент я мигрировал максимум 1000 тем, после чего очищал базу и начинал заново.
Есть ли идеи, что может вызывать эту проблему? Или какие-либо советы по диагностике? Все фоновые задания Hotlink в Sidekiq, похоже, планируются и выполняются корректно.
Спасибо, Роберт. Это работает для первых нескольких, которые я попробовал. Всё возвращается к началу, то есть к отображению изображения по прямой ссылке, а затем к его скачиванию и загрузке.
Мне нужно будет посмотреть, можно ли это автоматизировать, хотя это не устраняет первопричину, по которой они изначально не запускаются.
Нет, изображения с двойным расширением составляют меньшинство и не являются причиной всех сбоев. Однако опция «Перестроить HTML» исправляет и эти случаи.
Это fantastic и поздравляю! К счастью, я узнал это от других полезных людей здесь, когда сталкивался с похожими проблемами, и я рад, что смог передать это вам.
Хорошо, я исправил все перенесённые сообщения через API, используя /posts/{num}/rebake. Странно, что команда rake posts:rebake в контейнере не сработала.
После автоматизации вызова API для перепроверки оказалось, что процент неудач при загрузке изображений составляет около 80%. Это довольно странно.
В итоге это оказалось ненадежным: работало для нескольких постов, но не для всех. Мне придется снова попытаться загрузить изображения. Ранее у меня возникали проблемы с этим — запросы просто зависали. Не уверен, пробовал ли я тогда параметр skip_validations в этих запросах.