Django collectstati c запоминает файлы stati c модуля при развертывании на Heroku - PullRequest
0 голосов
/ 17 июня 2020

Моя проблема в том, что каждый раз, когда я развертываю свой код в Heroku, при сборе статистики c, все файлы c внутри модулей копируются снова, даже если они не изменились. Это означает, что мой бесплатный лимит копий корзины amazon S3 достигается после нескольких развертываний, потому что при каждом развертывании копируется 400 файлов.

Проблема должна быть связана с некоторыми настройками Heroku, потому что при запуске manage.py collectstatic в моей IDE он не копирует файлы повторно, даже если по умолчанию используется корзина S3. У меня есть DISABLE_COLLECTSTATIC=1 в моих конфигурационных варах heroku, и я установил его в интерфейсе командной строки heroku, чтобы быть вдвойне уверенным.

Я понятия не имею, почему он это делает. В журналах развертывания тоже нет ничего полезного. Любая помощь будет принята с благодарностью.

Это журнал:

Successfully compiled 1 referred SASS/SCSS files.
Debug mode is off.
386 static files copied, 106 unmodified.

106 неизмененных файлов - это bootstrap SASS и несколько других моих собственных. 386 файлов - это drom django admin и django -countries. Несмотря на то, что они не меняются, они всегда копируются. Никакая замена настроек, похоже, не решает проблему.

Соответствующие части моих настроек .py:

STATICFILES_FINDERS = [
    # Default finders
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # finders for sass files
    'sass_processor.finders.CssFinder',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static/'),)

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# Settings for AWS bucket
AWS_S3_OBJECT_PARAMETERS = {
    'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
    'CacheControl': 'max-age=94608000',
}

AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_S3_REGION_NAME = 'eu-west-3'
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')

AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_DEFAULT_ACL = 'public-read'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}

STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = 'custom_storages.StaticStorage'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{STATICFILES_LOCATION}/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...