Django REST Framework的缓存实例
项目描述
通过在缓存中存储实例数据来加速Django REST Framework(DRF)的读取。
此代码从browsercompat中拆分出来。您可能对查看browsercompat源代码以获得完整的实现示例感兴趣。
自由软件: Mozilla公共许可证版本2.0
它是如何工作的
在正常的DRF视图中,使用Django查询集来加载一个对象或对象列表。序列化器用于将对象转换为“原生”表示,然后渲染器在这个原生表示上工作。如果序列化器包含相关模型的数据,则可能需要多个数据库查询来生成原生表示。使用
此项目将Django查询集替换为一个缓存感知代理类,使其能够以零数据库请求(检索实例)或一个请求(获取列表视图的主键)来服务读取请求。它适用于具有大量读取操作和许多相关实例之间链接的API。
使用缓存时,Django对象会被序列化为JSON格式。缓存中只存储用于DRF原生表示的属性。这包括外键、反向关系、日期和时间等字段的JSON表示。这些序列化对象按主键存储在缓存中。当在缓存中找到实例时,渲染DRF表示不需要进行数据库读取。如果实例不在缓存中,则将其序列化和存储,以便未来的读取更快。
API实现者编写处理JSON序列化、从数据库加载以及识别变更时的无效缓存条目的方法。有几个集成点,包括用于从缓存加载数据的视图混入。只需对现有代码进行少量更改,您的读取视图就可以变得更快。
项目状态
此代码用于2015 - 2016年开发的browsercompat项目,但截至2016年8月已暂停。由于这是此代码的主要使用者,因此可能需要一段时间才能实现更多功能。
历史
0.3.4 (2016-08-14)
停止支持Django 1.7和Python 2.6
将测试扩展到Django 1.10、Django REST Framework 3.4和Python 3.5
0.3.3 (2015-11-05)
为datetime.timedelta添加序列化器,以支持Django 1.8的DurationField(creynold)
将日期时间、日期和时间差的字符串表示转换为其他格式
将测试扩展到Django 1.9 beta 1和Django REST Framework 3.3
0.3.2 (2015-09-23)
移除Django 1.8中的弃用警告
将测试扩展到Django master和Django REST Framework 3.2
修复在mock 1.3.0下中断的无效mock.patch测试
文档更新和修复
0.3.1 (2015-06-16)
将get_object_or_404移动到混入方法,以允许更方便的扩展。
0.3.0 (2015-04-09)
与Django 1.8进行测试
与Django REST Framework 2.4、3.0和3.1进行测试
CachedModel现在支持.as属性作为别名,通常指向.id字段。DRF 3使用.as确定模型是否已保存到数据库,对于未保存的字段返回空关系数据。
cache.delete_all_versions()将删除模型和PK的所有缓存实例。这在更改发生在正常请求之外时很有用,例如在数据迁移期间。
0.2.0 (2014-12-11)
向cache.update_instance添加update_only选项,以支持冷缓存的最终一致性。
0.1.0 (2014-11-06)
首次发布在PyPI。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
哈希值 for drf_cached_instances-0.3.4-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d07200254a43c407bffc92c088ea592284f34cffe0add0c5aa48e6daf273d24c |
|
MD5 | 895344624ff4efc7024716a055669c2a |
|
BLAKE2b-256 | d4e166daaf608326b2dcc50fb52d699bcd462ea441cd6941c6bc83ed9f8b3553 |