Использование azure в качестве хранилища для Django (с использованием django-storages)

Я использую хранилища django, которые я использовал в прошлом для работы с AWS S3. Но с Microsoft Azure я сталкиваюсь с ошибками, которые не дают результатов в Google.

Я разрабатываю с использованием Python 3 и Django 1.8.4. Я использую django-storages и django-storages-redux для поддержки python 3.

При вызове ./manage.py collectstatic и вводе yes получаю две (!) ошибки:

Traceback (most recent call last):
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/storages/backends/azure_storage.py", line 44, in exists
    self.connection.get_blob_properties(
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/storages/backends/azure_storage.py", line 34, in connection
    self._connection = azure.storage.BlobService(
AttributeError: 'module' object has no attribute 'BlobService'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/core/management/base.py", line 393, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/core/management/base.py", line 444, in execute
    output = self.handle(*args, **options)
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 168, in handle
    collected = self.collect()
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 107, in collect
    handler(path, prefixed_path, storage)
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 305, in copy_file
    if not self.delete_file(path, prefixed_path, source_storage):
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 218, in delete_file
    if self.storage.exists(prefixed_path):
  File "/Users/mac/.virtualenvs/bratwurst/lib/python3.4/site-packages/storages/backends/azure_storage.py", line 46, in exists
    except azure.WindowsAzureMissingResourceError:
AttributeError: 'module' object has no attribute 'WindowsAzureMissingResourceError'

Я следовал скудным инструкциям по использованию django-storages с azure здесь .

Любая идея, что может быть причиной этой ошибки? Кто-нибудь успешно развернул приложение django 1.8 с лазурью в качестве хранилища и серверной частью статических файлов?

изменить: я немного поработал в модуле django-storages: Использование

import azure.storage.blob
self._connection = azure.storage.blob.blobservice.BlobService(

вместо того, чтобы просто

self._connection = azure.storage.BlobService(

Но теперь я получаю разные ошибки, которые заставляют меня поверить, что эта проблема на самом деле глубже.


person David Schumann    schedule 15.10.2015    source источник


Ответы (2)


Я нашел проблему:

django-storages-redux просто устарел и не совместим с новейшей версией azure sdk.

запрос на вытягивание от автора находится в разработке:

https://github.com/jschneier/django-storages/pull/86

Я сделал свое собственное быстрое исправление здесь:

https://github.com/schhumannd/django-storages

person David Schumann    schedule 15.10.2015

Поскольку вы используете платформу хранения поверх нашей библиотеки хранения, наша поддержка может быть ограничена. Похоже, что были внесены изменения в реструктуризацию и переименование частей клиентской библиотеки Python, а используемая вами платформа «Azure-Storage» не обновила свои инструменты. У других были аналогичные проблемы с использованием этой платформы. См. следующую проблему, связанную с хранилищами Django:
https://bitbucket.org/david/django-storages/issues/225/azure-storages-are-incorrectly-imported

Просмотр файла «backend» для вашего решения Django выглядит так, что это предлагает вам очень мало удобства по сравнению с прямым использованием нашей службы хранения. Вы можете рассмотреть возможность использования нашей библиотеки, так как она даст вам максимальную гибкость при хранении данных. Если вы предпочитаете использовать Django-хранилища, вы можете связаться с ними и посмотреть, исправят ли они это или разветвят свою кодовую базу и сделают исправление самостоятельно. Вы можете увидеть всю работу, которую мы делаем для улучшения этой библиотеки, здесь: https://github.com/Azure/azure-storage-python/tree/dev

Спасибо!

person jehine-MSFT    schedule 16.10.2015
comment
Поддерживает ли предложение MS API хранилища Django напрямую? - person rgammans; 29.07.2020