【问题标题】:Using Django Settings to cache a timestamp使用 Django 设置缓存时间戳
【发布时间】:2014-12-02 13:06:42
【问题描述】:

我想使用 Django 设置来无限期地存储一个值。此值将在服务器进程的整个生命周期中发生变化,不应忘记。看,我要做的是在我的服务器文件系统上生成一个静态文件,并将其生成时间存储在 django.conf.settings 中。

我很清楚重启 fcgi 服务器时所有设置都会丢失,这没关系。但是,我看到的行为(和问题)是设置经常被重置。我无法确定它被重置的原因,它似乎相当随机。

有没有人知道 Django 是否经常重置其设置?还是我应该在我的逻辑中寻找错误?另一种实现我想要的方法怎么样?这可能与在线程模式下运行 fcgi 服务器有关吗?

我可能只是将时间戳写入文件系统,我们会看到...

PS:当我使用 Django 的本地 lighttp 服务器时,我的代码按预期工作。

PPS: Django 的缓存框架可能是获得我想要的东西的聪明方法,但此时我将无法使用它:(

【问题讨论】:

  • hmm,基本上您所做的不是将值保存在设置 file 中,而是保存在您当前的 Settings 实例中。在具有多个工作人员的服务器上,显然所有工作人员都不相同..会推荐 MySQL(如果您担心性能,则推荐 SQLitedb).. 或者可能会详细说明您正在做什么,也许有另一个明显的解决方案
  • 感谢@Martin,这对我来说听起来很正确,而且非常有意义。现在我只是要写入文件系统(这个项目没有数据库)。感谢您花时间写评论,干杯:)

标签: python django django-settings


【解决方案1】:

所以这个问题的简短回答是:不要在 Django 的设置中存储全局运行时数据。每个新的进程线程都会创建自己的设置实例,这意味着您的应用程序在每个线程中的行为会有所不同,或者您必须在单线程模式下运行您的应用程序(不利于性能)。

如果您需要存储此类数据,请使用 Django 缓存框架、数据库或文件系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多