Nano Hash - криптовалюты, майнинг, программирование

sorl-thumbnail Ошибка ThumbnailException после клонирования экземпляра EC2

Я клонировал рабочий экземпляр EC2, чтобы создать вторичный промежуточный сервер. Все работает как надо, за исключением sorl-thumbnail.

Прежде чем я опишу ошибки, которые я получаю, я думаю, было бы полезно описать стек, с которым я работаю. В нем участвуют 3 экземпляра EC2; сервер приложений, работающий на django в сочетании с Nginx и Gunicorn; база данных под управлением MySQL и Redis; и медиа-сервер под управлением Nginx. Сервер приложений использует NFS для локального монтирования каталога мультимедиа с сервера мультимедиа. Все соответствующие порты открыты в AWS, а сервер приложений добавлен в файл /etc/exports на медиасервере.

Что касается проблемы, которую я вижу... Атрибут img src для всех изображений, которые должны быть сгенерированы sorl-thumbnail, пуст. Когда я просматриваю журнал своего приложения django, я вижу такую ​​запись для каждого отсутствующего изображения:

[04/29/2013 13:11:54] DEBUG   : Could not find thumbnail image for rendering </media/images/12345.jpg>
ThumbnailException: Source file: '/images/12345.jpg' does not exist.
[04/29/2013 13:11:54] DEBUG   : Could not retrieve image for </media/images/12345.jpg>

Однако файл 12345.jpg существует в /media/images/.

Я провел большую часть пятницы, пытаясь решить эту проблему, но безрезультатно. Кто-нибудь сталкивался с чем-то подобным?


Ответы:


1

Сгенерированные данные, такие как эскизы изображений, часто хранятся в (сравнительно) временном расположении файловой системы и То же самое можно сказать и о том, как работает sorl-thumbnail:

Когда вы используете тег шаблона миниатюры, тег sorl-thumbnail ищет миниатюру в хранилище ключевых значений. Ключ для эскиза генерируется из его имени файла и хранилища. [...] Стоит отметить, что sorl-thumbnail не проверяет, существует ли источник или миниатюра, если ключ миниатюры найден в хранилище значений ключей.

Примечание. Это означает, что если вы измените или удалите исходный файл или удалите миниатюру, sorl-thumbnail все равно будет извлекаться из хранилища значений ключей. Поэтому важно, чтобы при удалении или изменении исходного файла или файла эскиза уведомлялось хранилище ключевых значений.

[выделено мной]

Теперь экземпляры Amazon EC2 обычно имеют два различных типа хранилища, а именно постоянное хранилище Amazon Elastic Block Store (Amazon EBS), которые копируются при клонировании экземпляра, а также тома Amazon EC2 Instance Store (обычно именуемые как эфемерное хранилище), которые теряются при клонировании экземпляра; см. мой ответ на как сделать резервную копию экземпляра/эфемерного хранилища aws ec2? для получения дополнительной информации об этой разнице/проблеме.

Таким образом, предположительно, ваши эскизы были сохранены на эфемерном томе, и теперь их нужно будет сгенерировать соответствующим образом.

29.04.2013
  • На самом деле я создал этот экземпляр EC2 с помощью команды ec2-bundle-vol AMI Tool. Затем я загрузил пакет в корзину S3 с помощью команды ec2-upload-bundle и использовал эту корзину при регистрации AMI для вторичного промежуточного сервера. Поэтому, насколько я понимаю, это точная копия рабочего промежуточного экземпляра на момент выдачи команды ec2-bundle-vol. 30.04.2013
  • Также, возможно, стоит упомянуть, что я использую Redis для кэширования и изменил settings_local.py на новом вторичном промежуточном сервере, чтобы он указывал на другое хранилище значений ключа Redis, чем то, которое используется первичным промежуточным сервером. 30.04.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..