使用Django的collectstatic与boto S3抛出"错误32:Broken Pipe"过了一会儿

时间:2015-04-10 02:16:41

标签: python django amazon-s3 boto collectstatic

我正在使用boto与S3存储我的Django网站的静态文件。当使用collectstatic命令时,它会在停止文件并抛出"Error 32: Broken Pipe."之前完美地上传大量文件。当我尝试再次运行该命令时,它会跳过它已经上传的文件并且从它停止的文件开始,然后在没有上传任何新内容的情况下抛出相同的错误。

4 个答案:

答案 0 :(得分:9)

关键似乎是要指定你的存储桶所在的AWS Endpoint。我尝试了一些不同的方法,但最终为我工作的解决方案是为指定的boto创建配置文件在documentation

以下是我在~/.boto创建的配置文件的内容:

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

答案 1 :(得分:3)

BenWurth的答案很好,但是如果你像我一样并且不想添加配置文件,你可以选择使用django-storage更好地维护堂兄“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'

然后一切都应该好。

答案 2 :(得分:0)

老问题,但要轻松解决这个问题,我只是添加了环境变量" AWS_DEFAULT_REGION"与我正在使用的地区(例如" ap-southeast-2")。这在本地(窗口)和AWS EB

中工作

答案 3 :(得分:0)

我也只有Selenium的问题,可能是因为它太大了,像@Kyle Falconer提到的那样。在我的案例中,它与地区无关。我解决了#34;它通过将文件本地复制到需要它的S3存储桶。