Я пытаюсь использовать django-pipeline-1.1.27 с s3boto для сжатия и фильтрации статических файлов, а затем загружать их в корзину s3. Если я просто использую:
PIPELINE_STORAGE = 'pipeline.storage.PipelineFinderStorage'
Тогда это работает, и я получаю статическую папку с хорошим версионным файлом, который я настроил. Как только я переключусь на
PIPELINE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Я получаю
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_manager(settings)
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/management/commands/synccompress.py", line 39, in handle
packager.pack_stylesheets(package, sync=sync, force=force)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/packager.py", line 52, in pack_stylesheets
**kwargs)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/packager.py", line 60, in pack
package['output'], package['paths'])
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/__init__.py", line 45, in need_update
version = self.version(paths)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/__init__.py", line 20, in version
return getattr(self.versioner, 'version')(paths)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/hash/__init__.py", line 37, in version
buf = self.concatenate(paths)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/hash/__init__.py", line 27, in concatenate
return '\n'.join([self.read_file(path) for path in paths])
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/hash/__init__.py", line 31, in read_file
file = storage.open(path, 'rb')
File "/my/virtual/env/lib/python2.7/site-packages/django/core/files/storage.py", line 33, in open
file = self._open(name, mode)
File "/my/virtual/env/lib/python2.7/site-packages/storages/backends/s3boto.py", line 177, in _open
raise IOError('File does not exist: %s' % name)
IOError: File does not exist: css/style.css
, который является одним из моих исходных файлов. Так почему же конвейер больше не хочет выполнять шаги фильтра / объединения / сжатия, когда я переключаюсь на хранилище s3boto?
Может быть, я что-то делаю. Вот другой конфиг на случай, если он поможет:
INSTALLED_APPS = (
...
'pipeline',
'storages',
)
STATICFILES_FINDERS = (
'pipeline.finders.PipelineFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATIC_ROOT = "/some/path/outside/django_project/deploy_static"
STATICFILES_DIRS = () # All statics in this site are in apps
STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage'
PIPELINE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
PIPELINE = True
PIPELINE_AUTO = True
PIPELINE_VERSION = True
PIPELINE_VERSION_PLACEHOLDER = 'VERSION'
PIPELINE_VERSIONING = 'pipeline.versioning.hash.SHA1Versioning'
PIPELINE_CSS = {
'standard': {
'source_filenames': (
'css/style.css',
...
),
'output_filename': 'css/all-VERSION.css',
'extra_context': {
'media': 'screen,projection',
},
}
}
Мой сайт на Django 1.3.1.
Я запускаю команду:
python manage.py synccompress --force
В кредитки AWS также в настройках, но это спорный вопрос, потому что это даже не добраться до этой точки.
ОБНОВЛЕНИЕ Добавлен полный стек и параметры, запрошенные в комментариях
ОБНОВЛЕНИЕ По просьбе автора библиотеки я попытался обновить ее до последней бета-версии. Наблюдения от этого пока:
- Я не знаю, как получить версионные сжатые файлы
- collectstatic оставляет мне сжатые файлы и оригиналы
- По-прежнему выдает ту же ошибку из django-pipe, когда сконфигурировано хранилище boto: он хочет отправить мои исходные файлы на s3, но я даже не вижу, где он размещает мои активы. Ничто не помещается в STATIC_ROOT.
ОБНОВЛЕНИЕ Я создал самый простой проект, который работает с хранилищем поиска, а затем разрывается с S3Boto. Я отправил его в github и включил захват трассировки стека.
https://github.com/estebistec/simple_pipeline
https://raw.github.com/estebistec/simple_pipeline/master/STACKTRACE
Я был бы в восторге, если бы мне сказали, что я делаю что-то действительно глупое, и это должно сработать.