python - Django 应用程序中的 datetime.now() 变坏了

标签 python django apache datetime mod-wsgi

我在部署 Django 应用程序后遇到了一些问题。我在 ubuntu 服务器上使用 Apache + mod-wsgi。在我重新启动服务器后一段时间,时间变得很糟糕,大约 -10 小时是错误的。我制作了一个 Django View ,如下所示:

def servertime():
  return HttpResponse( datetime.now() )

在我重新启动服务器并检查显示该 View 的 url 之后,它首先看起来没问题。然后在某一时刻它有时会给出正确的时间,有时会给出错误的时间。服务器时间是正确的。

有什么线索吗?我用谷歌搜索了它,但没有走运。

最佳答案

我可以看看你的 urls.py 吗?

类似的行为曾经让我难过......

原来是我的 urls.py 调用 View 的方式。 Python 运行一次 datetime.now() 并存储它以备将来调用,从不真正再次调用它。这就是为什么 django 开发人员必须实现将函数而不是函数调用传递给模型的默认值的能力,因为它将采用函数的第一次调用并使用它直到 python 重新启动。

您的行为听起来像是第一次是正确的,因为这是第一次调用 View 。它有时是不正确的,因为它再次获得了相同的日期。然后它再次随机正确,因为你的 apache 可能为它启动了另一个工作进程,当你在处理请求的进程之间跳转时,可能会发生疯狂。

关于python - Django 应用程序中的 datetime.now() 变坏了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/883823/

相关文章:

python - Flask:在此服务器上找不到请求的 URL

linux - 访问 apache AWS EC2 Linux 服务器上的错误日志

java - 加载自定义 NER 模型 Stanford CoreNLP

python - str 和 int 实例之间不支持

python - 在 PyCharm 中运行 Django 应用测试

php在同一页面上打开列出的文件/目录而不重定向

python - 计算 if 循环的迭代次数

python - 在 pandas 数据框中搜索字符串

python - Django 电子邮件 : Client does not have permission to send as this sender

python - 如何用参数填充正则表达式字符串