gpt4 book ai didi

python - 如何缓存 Django Rest Framework API 调用?

转载 作者:IT老高 更新时间:2023-10-28 20:32:36 26 4
gpt4 key购买 nike

我使用 Memcached 作为我的 django 应用程序的后端。此代码在正常的 django 查询中工作正常:

def get_myobj():
cache_key = 'mykey'
result = cache.get(cache_key, None)
if not result:
result = Product.objects.all().filter(draft=False)
cache.set(cache_key, result)
return result

但与 django-rest-framework api 调用一起使用时不起作用:

class ProductListAPIView(generics.ListAPIView):
def get_queryset(self):
product_list = Product.objects.all()
return product_list
serializer_class = ProductSerializer

我即将尝试提供缓存功能的 DRF 扩展:

https://github.com/chibisov/drf-extensions

但 github 上的构建状态目前显示“构建失败”。

我的应用在 api 调用上的阅读量很大。有没有办法缓存这些调用?

谢谢。

最佳答案

好的,所以,为了对您的查询集使用缓存:

class ProductListAPIView(generics.ListAPIView):
def get_queryset(self):
return get_myobj()
serializer_class = ProductSerializer

您可能希望在缓存集上设置一个超时时间(例如 60 秒):

cache.set(cache_key, result, 60)

如果要缓存整个 View :

from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page

class ProductListAPIView(generics.ListAPIView):
serializer_class = ProductSerializer

@method_decorator(cache_page(60))
def dispatch(self, *args, **kwargs):
return super(ProductListAPIView, self).dispatch(*args, **kwargs)

关于python - 如何缓存 Django Rest Framework API 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com