Подтвердить что ты не робот

Использование Django collectstatic с boto S3 выдает "Ошибка 32: Сломанная труба" через некоторое время

Я использую boto с S3 для хранения статических файлов сайта Django. При использовании команды collectstatic она отлично загружает хороший фрагмент файлов перед остановкой в ​​файле и бросает "Error 32: Broken Pipe." Когда я пытаюсь снова запустить команду, она пропускает файлы, которые она уже загрузила, и начинается с файла где он остановился, прежде чем выбросить ту же ошибку, не загрузив ничего нового.

4b9b3361

Ответ 1

Кажется, что ключ указывает, что конечная точка AWS находится в вашем ведре. Я пробовал делать это по-разному, но решение, которое, наконец, помогло мне создать файл конфигурации для boto, как указано в документации.

Вот содержимое конфигурационного файла, созданного мной в ~/.boto:

[Credentials]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[s3]
host=s3-us-west-2.amazonaws.com

Ответ 2

Ответ BenWurth в порядке, но если вы похожи на меня и не хотите добавлять файл конфигурации, вы можете использовать django-хранилища в качестве альтернативы, поддерживая кузен "django-storages-redux" и просто добавляя дополнительный env var на settings.py

pip uninstall django-storages (if you have this installed)
pip install django-storages-redux

а затем в settings.py

AWS_S3_HOST = 'YOUR-AWS-ENDPOINT' #in my case 's3-us-west-2.amazonaws.com'

Тогда все должно быть хорошо.

Ответ 3

Старый вопрос, но, чтобы исправить это, я просто добавил переменную окружения "AWS_DEFAULT_REGION" с областью, которую я использовал (например, "ap-southeast-2" ). Эта работа локально (окна) и в AWS EB

Ответ 4

У меня также была проблема только с jquery.js, вероятно, потому, что она слишком велика, как упоминает @Kyle Falconer. В моем случае это не имело никакого отношения к региону. Я "решил" его, скопировав файл локально в ведро S3, где он должен быть.