Collectstatic和S3:没有找到更新的文件

Jok*_*ker 9 django amazon-s3 amazon-web-services

我正在使用Amazon S3为Django项目存储静态文件,但是collectstatic没有找到更新的文件 - 只有新文件.

我一直在寻找答案,我的猜测是我的配置不正确.我按照这篇博客文章来帮助设置所有内容.

我也碰到了这个与我的问题相同的问题,但我已经尝试了所有的解决方案.

我甚至试过使用这个问题中提出的插件.

以下是一些可能有用的信息:

settings.py

...
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
...
# S3 Settings
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL
AWS_PRELOAD_METADATA = False
Run Code Online (Sandbox Code Playgroud)

requirements.txt

...
Django==1.5.1
boto==2.10.0
django-storages==1.1.8
python-dateutil==2.1
Run Code Online (Sandbox Code Playgroud)

EDIT1:

如果这个问题对我自己的情况来说过于独特,对大量观众有任何帮助,我深表歉意.尽管如此 - 这长期以来一直在阻碍我的工作效率,而且我浪费了很多时间寻找解决方案,所以我开始奖励那些可以帮助解决这个问题的人.

EDIT2:

我刚刚遇到了类似的问题.我的时区与我的AWS桶的位置不同.如果默认情况下collectstatic使用时间戳,这会干扰进程吗?

谢谢

Gor*_*Sun 8

我想我解决了这个问题.和你一样,我在这个问题上花了这么多时间.我也在你在bitbucket上找到的bug报告.这就是我刚刚完成的事情.

我有

django-storages==1.1.8
Collectfast==0.1.11
Run Code Online (Sandbox Code Playgroud)

这根本不起作用.删除所有内容一次也不起作用.在那之后,它无法接受修改并拒绝更新任何内容.

问题在于我们的时区.S3会说它的文件最后修改的时间晚于我们要上传的文件.django collectstatic将不会尝试复制新的.它将调用文件"未修改".例如,这是我在修复之前看到的内容:

Collected static files in 0:00:45.292022.
Skipped 407 already synced files.
0 static files copied, 1 unmodified.
Run Code Online (Sandbox Code Playgroud)

我的解决方案是"改变时间的地狱!".除了我们在这里解决的时区问题,如果我犯了错误并需要回滚怎么办?它将拒绝部署旧的静态文件并使我的网站崩溃.

这是我对Collectfast的请求https://github.com/FundedByMe/collectfast/pull/11.我仍然留下一面旗帜,所以如果你真的想检查修改时间,你仍然可以做到.在合并之前,只需使用我的代码https://github.com/sunshineo/collectfast

你有美好的一天!

- 戈登PS:为此,一直待到凌晨4点40分.我的日子已经毁了.


Jok*_*ker 6

经过几个小时的挖掘,我发现了这个错误报告.

我改变了我的要求,恢复到以前版本的Django存储.

django-storages==1.1.5
Run Code Online (Sandbox Code Playgroud)


sab*_*ack 3

您可能需要考虑使用 Github 上 antonagestam 编写的这个插件: https: //github.com/FundedByMe/collectfast

它比较文件的校验和,这是确定文件何时更改的有保证的方法。这是另一个 stackoverflow 问题中公认的答案:Faster replacement to manage.py Collectstatic (w/ s3boto storage backend) to sync static files to s3?