django - 自动刷新缓存 DRF
问题描述
我使用 rest_framework_extensions 缓存我的 rest-api,例如:
class UpdatedAtKeyBit(KeyBitBase):
def get_data(self, **kwargs):
basename = kwargs['view_instance'].basename.lower()
key = f'api_updated_at_timestamp_{basename}'
value = cache.get(key, None)
if not value:
value = datetime.datetime.utcnow()
cache.set(key, value=value)
return force_text(value)
class CustomListKeyConstructor(DefaultKeyConstructor):
list_sql = ListSqlQueryKeyBit()
pagination = PaginationKeyBit()
updated_at = UpdatedAtKeyBit()
def change_api_updated_at(sender=None, instance=None, *args, **kwargs):
cache.set(f'api_updated_at_timestamp_{sender.__name__.lower()}', datetime.datetime.utcnow())
for model in [Address, Order, Permission, User]:
post_save.connect(receiver=change_api_updated_at, sender=model)
post_delete.connect(receiver=change_api_updated_at, sender=model)
这很完美!我缓存来自模型的 GET 列表响应。现在我想在更新或保存后自动刷新这些视图。这样下面的请求就已经在缓存中了。我该如何解决这个问题?
解决方案
推荐阅读
- python - 如何在不带括号的函数中传递参数?
- ios - Apple 的 New York 字体可以在 iOS 12 中使用吗?
- python - 从字典中提取多个数据框
- qt - 更改月份时,QT 日历上的中继器显示不正确
- ios - iOS 将压缩的 NSData 写入文件会生成损坏的 zip 文件
- amazon-web-services - Logstash Http 输入插件
- html - 如何居中和超文本 MySQL 表
- scala - spark分区中的数据是什么时候真正实现的?
- amazon-web-services - 模板包含错误。:[/Resources/CloudTrail/Type/EventSelectors] AWS CloudFormation CloudTrail 中的模板中不允许使用“null”值
- firebase - 如何使用多个文档计算 Firestore 中的交易限额?