我有一个通常在其中缓存数据的端点。但是我想每隔几个小时刷新一次数据。
所以我想实现类似于以下条件:
if now() - header.last_modified > one_hour:
return create_new_data_with_last_modified_set_to_now()
else:
return http_answer_304_not_modified()
问题是Django的API仅支持last_modifed(callback_that_gets_last_modified)
,它既比较上次修改时间,又在HTTP响应上将其设置为相同的值。如何分别控制这两个值?
PS:我需要这个的原因是我发送了一些X秒钟后超时的信息。因此,如果X / 2秒已经过去,我想刷新它
您可以使用所需的行为刷新数据,而无需像这样通过callback_that_gets_last_modified请求修改,因为它不知道:
def get_cache_last_modified():
return datetime.datetime.utcfromtimestamp((datetime.datetime.now() - datetime.datetime.utcfromtimestamp(0)).total_seconds() // (X/2) * (X/2))
例如,如果您的数据每两小时更新一次(X == 7200),它将返回当前时间,四舍五入为一个小时。在当前小时内最后修改的用户将得到304未修改,而从前一次修改的用户将获得刷新的数据。