Django 自动刷新缓存
我将django的内置缓存与Django 自动刷新缓存,django,caching,Django,Caching,我将django的内置缓存与@cache\u页面装饰器一起使用。但是,我希望缓存能够定期自动刷新,以便刷新不会由用户的实际页面请求触发,从而导致延迟 想到的一个明显的策略是使用芹菜任务。我有两个问题: 如果芹菜任务方法可以接受,我需要什么代码来a)触发刷新和b)未知页数,例如myapp.com/products/?page=2,myapp.com/products/?page=3(我无法预测页数) 有更好的方法吗 我认为用芹菜来做这件事太过分了。有一个定义缓存过期的设置: CACHE\u SEC
@cache\u页面
装饰器一起使用。但是,我希望缓存能够定期自动刷新,以便刷新不会由用户的实际页面请求触发,从而导致延迟
想到的一个明显的策略是使用芹菜任务。我有两个问题:
我认为用芹菜来做这件事太过分了。有一个定义缓存过期的设置:
CACHE\u SECONDS
–每个页面应缓存的秒数
参考:
这已在1.8中引入,并影响
@cache\u页面的持续时间。不要将其与用于使用缓存功能(如cache.set()
)的CACHES:TIMEOUT
设置混淆。更多信息。我认为芹菜任务对于这一点来说是过火了。有一个定义缓存过期的设置:
CACHE\u SECONDS
–每个页面应缓存的秒数
参考:
这已在1.8中引入,并影响@cache\u页面的持续时间。不要将其与用于使用缓存功能(如cache.set()
)的CACHES:TIMEOUT
设置混淆。更多信息。最后,我使用框架编写了一个芹菜任务,每小时刷新一次缓存—它还处理分页。示例代码:
@shared_task
def refresh_caches():
header = {"Content-Type": "application/json; charset=utf-8",
"Authorization": settings.USER_TOKEN}
next_page_url = settings.API_URL +'/products/'
while len(next_page_url) > 0:
response = requests.get(next_page_url, headers=header)
next_page_url = ''
jsonresponse = response.json()
if jsonresponse.get('next'):
next_page_url = jsonresponse['next']
最后,我编写了一个芹菜任务,使用该框架每小时刷新一次缓存—它还处理分页。示例代码:
@shared_task
def refresh_caches():
header = {"Content-Type": "application/json; charset=utf-8",
"Authorization": settings.USER_TOKEN}
next_page_url = settings.API_URL +'/products/'
while len(next_page_url) > 0:
response = requests.get(next_page_url, headers=header)
next_page_url = ''
jsonresponse = response.json()
if jsonresponse.get('next'):
next_page_url = jsonresponse['next']
我知道缓存超时了。我想防止的是用户发起的刷新缓存的请求导致延迟-我想手动触发缓存刷新。@RunLoop我明白了。我的理解是,用户请求不应该扩展缓存,它将在设置后的cache\u MIDDLEWARE\u SECONDS
过期,但我们需要深入代码以确认这一点。这是一个问题,但当你甚至不想这样做,需要手动使其过期。我理解缓存超时。我想防止的是用户发起的刷新缓存的请求导致延迟-我想手动触发缓存刷新。@RunLoop我明白了。我的理解是,用户请求不应该扩展缓存,它将在设置后的cache\u MIDDLEWARE\u SECONDS
过期,但我们需要深入代码以确认这一点。这是一个问题,但当你甚至不想,并需要手动过期。