Django修改后的手动控件

问题描述 投票:0回答:1

我有一个通常在其中缓存数据的端点。但是我想每隔几个小时刷新一次数据。

所以我想实现类似于以下条件:

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秒已经过去,我想刷新它

python django http last-modified
1个回答
0
投票

您可以使用所需的行为刷新数据,而无需像这样通过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未修改,而从前一次修改的用户将获得刷新的数据。

© www.soinside.com 2019 - 2024. All rights reserved.