对于我们的博客平台,我们有一个“文章”模型,其中包含一个“更新的”日期时间字段:
class Article(models.Model):
updated = models.DateTimeField(null=True, blank=True)
...
当一篇文章在 24 小时内第一次被访问者打开时,我们会对不同的模型字段进行一些耗时的计算,然后将模型保存到数据库中。有了这个,我们还将我们的“更新”字段更新为当前的 datetime.now()。
if (datetime.now() - article.updated).days > 1:
# do some time consuming calculations
article.updated = datetime.now()
article.save()
当一篇文章或多或少同时被请求时,第一次请求的耗时操作尚未完成,导致每天一次的操作在同一个对象上再次开始(article.updated 仍然具有旧值)。在开始计算之前另外调用 article.save() 是否有帮助?还是将这些数据从保存到数据库中推迟到请求完成?