用于django的amazon简单存储服务(s3)缓存后端

django-s3-cache的Python项目详细描述


Build statusDownloadsLatest VersionLicense

这是用于django的amazon简单存储服务(s3)缓存后端。 它基于django.core.cache.backends.filebased.filebasedcache后端 以类似的方式运作。此后端使用 django-storages读取/写入 数据输入s3。它使用s3boto存储后端。

传递到此后端的所有键/值都存储在平面目录结构中 在你的S3桶里。它使用sha1而不是md5来创建文件名。

安装

使用pip从pypi安装:

pip install django-s3-cache

配置此后端的使用:

CACHES = {
    'default': {
        'BACKEND': 's3cache.AmazonS3Cache',
        'OPTIONS': {
            'ACCESS_KEY' : 'Your AWS access key',
            'SECRET_KEY' : 'Your AWS secret access key',
            'BUCKET_NAME': 'Your AWS storage bucket name',
            'LOCATION'   : 'directory_prefix',
        }
    }
}

配置

django s3缓存支持许多配置选项。它们应该被定义为 如上所示,settings.py中的options字典的键。如果有什么 未显式定义它遵循s3boto后端的默认值 django存储然后从settings.py读取它们。

note-1:settings.py中的某些值可以由boto和其他aws感知的全局使用 django组件,因为它们遵循格式aws_xxxx。最好定义 如果不希望遇到问题,则显式将值作为缓存选项。

note-2:因为1.2版django s3缓存与django storages v1.1.8兼容,后者 已更改配置变量的名称。所有新的变量都将降低 case和aws keys变量更改了名称。有关确切名称,请参见s3botostorage类 在s3boto.py中定义。django s3缓存实现了与前一个缓存的向后兼容性 允许更容易升级的选项语法。旧名称映射到新名称 选项在传递到s3botostorage之前是低盒的。上面的例子显示了新的语法。

note-3:在版本1.3之前,在处理location 选择。如果已使用的缓存对象将存储在定义的目录下,但是选择 而清除缓存并没有考虑到这一点。cache.clear()或cache.\u cull() 将删除整个存储桶。这已在1.3版中修复!

note-4:在版本1.2到1.3中,向后兼容性处理中存在bug。 选项中的options。如果您对access_keysecret_key使用了新的样式语法, bucket_name它将被重写,boto将由于缺少身份验证参数而崩溃。 这已经在1.4版中修复了!

一些值得注意的选项是:

  • location-存储缓存文件的目录前缀。默认为空字符串,表示根目录;
  • default\u acl=private-已创建对象的默认acl。与s3boto存储后端不同,我们将其设置为private
  • bucket-acl=default-acl-acl(如果自动创建)。默认设置为private。最好对缓存文件使用单独的存储桶;
  • 减少冗余-如果您想节省一些存储成本,请设置为true
  • 被gzip-设置为true以启用gzip压缩。与gzip_content_type一起使用。请参阅django storagesdocumentation

django s3实现了类似于股票文件系统后端的剔除策略。它将遵循以下选项:

  • {EM1}$$Max条目——在删除旧值之前缓存中允许的最大条目数。如果禁用0剔除。此参数默认为300;
  • cull_frequency-ar当达到max_entries时剔除。实际比率是1/cull_frequency,因此将cull_frequency设置为2,以便在达到max_entries时剔除一半的条目;

贡献

源代码和问题跟踪程序位于https://github.com/atodorov/django-s3-cache

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带truezip的java拆分zip   java Spring,AppEngine:在AppEngine的数据源中添加postgresql url   java Android coverflow   java以编程方式创建复合过滤器,以在log4j 2中定义多个过滤器   java jpa eclipselink异常[eclipselink 4002]   中的java WordNet数据库目录相对路径。罐子   java无法在Spring Boot 2/3中显示登录的用户   java Onetomany:未找到联接表错误   java数据模型演化   java方法在类型列表中添加的(对象)不适用于参数(int)意味着什么?   用java打印两个数组   java SNMP4J发送从不超时   java添加/删除联系人(EditText)+类别(SpinnerBox),可以根据需要动态添加/删除多个联系人   语句和PreparedStatement之间的java差异   java在运行作为JAR归档文件分发的项目时加载图像等资源   来自应用程序或外部服务器的java Cron作业   多线程Java并发:并发添加和清除列表项   java更改单元测试的私有方法行为