django-selectel-storage
django-selectel-storage copied to clipboard
Ошибки при запуске collectstatic
Добрый день.
Реализована ли поддержка загрузки файлов при вызове collectstatic?
Запускаю collectstatic --no-input и после загрузки нескольких файлов возникает:
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 107, in collect
handler(path, prefixed_path, storage)
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 325, in copy_file
if not self.delete_file(path, prefixed_path, source_storage):
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 275, in delete_file
self.storage.delete(prefixed_path)
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django_selectel_storage/storage.py", line 85, in delete
self.container.remove(self._name(name), force=True)
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/selectel/storage.py", line 260, in method
return fn(self.name, *args, **kwargs)
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/selectel/storage.py", line 22, in wrapper
raise err
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/selectel/storage.py", line 16, in wrapper
return fn(storage, *args, **kwargs)
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/selectel/storage.py", line 176, in remove
r.raise_for_status()
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/requests/models.py", line 844, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 507 Server Error: status code 507 for url: https://187509.selcdn.ru/community/img/info_communities_2x.jpg
Судя по этому стэктрейсу файл удаляется при том, что контейнер совершенно пустой на момент запуска collectstatic.
А если вызвать команду с ключом --clear:
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
collected = self.collect()
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 89, in collect
self.clear_dir('')
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 210, in clear_dir
if not self.storage.exists(path):
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/django_selectel_storage/storage.py", line 89, in exists
self.container.info(self._name(name))
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/selectel/storage.py", line 260, in method
return fn(self.name, *args, **kwargs)
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/selectel/storage.py", line 16, in wrapper
return fn(storage, *args, **kwargs)
File "/usr/local/var/pyenv/versions/matbets/lib/python3.5/site-packages/selectel/storage.py", line 200, in info
assert r.status_code == (200 if path else 204)
AssertionError
Здравствуйте,
Вопрос задан не совсем корректно: django-selectel-storage реализовывает интерфейс хранилищ, который предлагает Django. А команда collectstatic
просто сохраняет найденную статику в эти хранилища, используя этот интерфейс. Таким образом, о какой-то особой поддержке загрузки файлов речи идти не может.
Что же касается ошибки. Месяц-полтора назад всё замечательно работало, Проверил прямо сейчас — выпадает та же ошибка. Почему-то всегда на шестом файле. Будем посмотреть, спасибо.
Похоже, Селектелу зачем-то потребовалось переписать API. Может, они при этом какой-нибудь троттлинг добавили, а внешняя библиотека selectel-api (она используется для API-запросов к облачному хранилищу) это не учитывает.
(добавлено) Хотя, с другой стороны, она 24 дня назад обновлялась. У Вас точно последняя версия selectel-api?
И, кстати, HTTP-ошибка 507 означает Insufficient Storage («переполнение хранилища»).
Через личный кабинет файлы загружаются с бОльшим объёмом без ошибок.
Возможно, хотя в личном кабинете наверняка троттл есть. У меня, кстати, без флага -c
выпадает ошибка 503, а не 507
Версия библиотеки стоит последняя.
@dmitra90, только что проверил снова. Без флага -c
всё прекрасно работает. Видимо, были временные проблемы на стороне Селектела.
С флагом -c
по-прежнему есть проблема. Будем разбираться