2012-02-26 69 views
6

我正在使用亚马逊S3存储我的所有静态文件(通过django-storages),并且它花费更多的钱来做PUT而不是GET。当我运行manage.py collectstatic时,Django为每个静态文件都执行PUT。有没有办法让它首先检查文件是否已经改变,如果它没有不打扰PUT?Django:只收集已更改的静态文件

回答

12

看来,所有你需要做的是安装python-dateutil:

pip install python-dateutil==1.2 

没有这个Django的存储器不会检查的,因为这个代码日期:

def modified_time(self, name): 
    try: 
    from dateutil import parser, tz 
    except ImportError: 
    raise NotImplementedError() 

modified_time抛出一个错误,但Django只是继续前进,因为它允许存储子类的modified_time方法未实现。我明白他们为什么这么做,因为这个功能并不是严格需要的。也就是说,如果有一些警告说为什么要上传所有东西,那就太好了。

请注意,我使用python-dateutil版本1.2。如果你使用的是最新版本的dateutil,你会在django-storages(django-storage版本1.1.4)中得到一个错误。

+0

我安装了python-dateutil == 2.1和django-storages == 1.1.8,它也可以。谢谢! – 2013-07-03 03:35:03