Collectstatic создает пустые файлы

Я пытаюсь обновить приложение до Django 1.11, но у меня возникают проблемы с collectstatic.

Старые версии:

django 1.8.17 
django-storages 1.5.1

Новые версии:

django 1.11.12
django-storages 1.6.6

хранения:

class StaticS3BotoStorage(ManifestFilesMixin, S3BotoStorage):
    location = 'static'
    file_overwrite = True
    preload_metadata = True

или

class StaticS3BotoStorage(CachedFilesMixin, S3BotoStorage):
    location = 'static'
    file_overwrite = True
    preload_metadata = True

В старых версиях collectstatic работал нормально, включая collectstatic --clear

После обновления collectstatic --clear не выполняется (файлы не удаляются). collectstatic копирует файлы, однако иногда создает две версии одного и того же файла. В этом конкретном примере я получаю base.hash1.css и base.hash2.css. base.hash2.css пусто, поэтому страницы открываются, но отображаются неправильно.

Если я не использую CachedFilesMixin или ManifestFilesMixin, collectstatic работает нормально, но очистить все равно не удается.

Я протестировал разные комбинации django 1.11 и django-хранилищ, но, похоже, все они ведут себя одинаково.

Кто-то еще сталкивался с подобной проблемой?

4 голоса | спросил apiljic 24 PMpTue, 24 Apr 2018 13:37:47 +030037Tuesday 2018, 13:37:47

1 ответ


0
Мы столкнулись с той же проблемой.Основная проблема, я думаю, имеет несколько проблем /источников:ManifestFilesMixin использует и повторно использует объекты ContentFile для генерации хэшированных файлов и сохраняет их несколько раз.Без сброса объектов ContentFile (путем вызова .seek (0) для них).S3BotoStorage сохраняет эти файлы, не проверяя, находятся ли они в правильном положении.Сравните это с FileSystemStorage: файлы всегда читаются с самого начала путем итерации по .chuncks () файла.Мы решили проблему с пустыми файлами, переопределив S3BotoStorage следующим образом:Короче говоря, мы ищем начало файла перед его сохранением.
ответил hellphil 10 J000000Tuesday18 2018, 20:02:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132