Git Product home page Git Product logo

django-selectel-storage's People

Contributors

idealatom avatar marazmiki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

django-selectel-storage's Issues

401 Client Error: Unauthorized for url

Hi. I'm using your storage as a default file storage. I'm reading file content in some celery tasks and everything works ok, but after some moment I'm starting to get HTTP 401 Error. After restarting celery the error disappears but on the next day it's come back.
It's looks like your Auth class for some reason doesn't reauthenticate after token expired. It's weird because the container is public and file content can be accessed without authentication.

Stacktrace (most recent call last):

  File "mail/tasks.py", line 46, in send_email
    content = attachment.file.read()
  File "django/core/files/utils.py", line 16, in <lambda>
    read = property(lambda self: self.file.read)
  File "django/db/models/fields/files.py", line 43, in _get_file
    self._file = self.storage.open(self.name, 'rb')
  File "queued_storage/backends.py", line 172, in open
    return self.get_storage(name).open(name, mode)
  File "django/core/files/storage.py", line 36, in open
    return self._open(name, mode)
  File "django_selectel_storage/storage.py", line 13, in _open
    return base.ContentFile(self.container.open(name).read())
  File "django_selectel_storage/selectel.py", line 110, in open
    stream=True).raw
  File "django_selectel_storage/selectel.py", line 106, in perform_request
    **kwargs)
  File "django_selectel_storage/selectel.py", line 79, in perform_request
    resp.raise_for_status()
  File "requests/models.py", line 941, in raise_for_status
    raise HTTPError(http_error_msg, response=self)

401 Client Error: Unauthorized for url: https://144411.selcdn.ru/3dplitka_media/uploads/organizations/requisites/Hafizova.docx

I'm using Python 3.7.6 with Django 2.2.12 and django-selectel-storage 1.0.0

django admin static bug

Есть ли поддержка сохранения/раздачи django static в библиотеке?

KeyError: 'x-object-downloads'

Traceback (most recent call last):
  File "./manage.py", line 4, in <module>
    main()
  ...
  File "/opt/vluki/vluki/base/management/commands/cdn_sync.py", line 41, in handle
    if cdn_storage.exists(cdn_filename):
  File "/usr/local/lib/python2.7/dist-packages/django_selectel_storage/storage.py", line 98, in exists
    self.container.info(self._name(name))
  File "/usr/local/lib/python2.7/dist-packages/selectel/storage.py", line 234, in method
    return fn(self.name, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/selectel/storage.py", line 15, in wrapper
    return fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/selectel/storage.py", line 190, in info
    "downloads": int(r.headers["X-Object-Downloads"])
  File "/usr/local/lib/python2.7/dist-packages/requests/structures.py", line 54, in __getitem__
    return self._store[key.lower()][1]
KeyError: 'x-object-downloads'

Ошибки при запуске 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

KeyError: 'last-modified'

>>> fix_site_offer(135406)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/aggregator/aggregator/src/apps/images/utils.py", line 218, in fix_site_offer
    if not default_storage.exists('%s' % image.image):
  File "/home/aggregator/aggregator/.env/local/lib/python2.7/site-packages/django_selectel_storage/storage.py", line 89, in exists
    self.container.info(self._name(name))
  File "/home/aggregator/aggregator/.env/local/lib/python2.7/site-packages/selectel/storage.py", line 213, in method
    return fn(self.name, *args, **kwargs)
  File "/home/aggregator/aggregator/.env/local/lib/python2.7/site-packages/selectel/storage.py", line 13, in wrapper
    return fn(*args, **kwargs)
  File "/home/aggregator/aggregator/.env/local/lib/python2.7/site-packages/selectel/storage.py", line 162, in info
    dt = datetime.strptime(r.headers["Last-Modified"],
  File "/home/aggregator/aggregator/.env/local/lib/python2.7/site-packages/requests/structures.py", line 54, in __getitem__
    return self._store[key.lower()][1]
KeyError: 'last-modified'

Добавить поддержку метаданных

Привет, Михаил! Мне нужно при выгрузке файлов добавлять метаданные (заголовки для Content-Disposition).
Предлагаю сделать так, как реализовано на амазоновской либе (см. тут )
Настройка AWS_S3_METADATA.
Как считаешь? Могу сделать пулл реквест

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.