有人会对这个日期时间问题提供见解吗:
我的 Web 应用程序(在 centos/apache/wsgi/django 上)datetime.datetime.now()
在每次调用时显示不同的当前时间()-我不是问为什么时间不断前进:)
我在调试日志中得到以下内容:(请注意,第一个和最后一个条目是由同一个过程创建的,但后者似乎是在第一个条目之前五个小时创建的,这毫无意义)
2009-10-28 22:00:37,724 DEBUG pid=16436 time=2009-10-28 22:00:37.724682
2009-10-28 22:00:40,194 DEBUG pid=16407 time=2009-10-28 22:00:40.194602
2009-10-28 22:00:42,742 DEBUG pid=16409 time=2009-10-28 22:00:42.742598
2009-10-28 22:00:44,643 DEBUG pid=16408 time=2009-10-28 22:00:44.643639
2009-10-28 22:00:46,747 DEBUG pid=16436 time=2009-10-28 22:00:46.747777
2009-10-28 22:00:48,973 DEBUG pid=16411 time=2009-10-28 22:00:48.973176
2009-10-28 22:00:51,261 DEBUG pid=16410 time=2009-10-28 22:00:51.261172
2009-10-28 17:13:16,867 DEBUG pid=16436 time=2009-10-28 17:13:16.867307
谢谢!
答案1
您可能在同一进程中运行多个应用程序,这些应用程序对 TZ 的设置不同。当使用嵌入模式并将其与同一 Apache 安装中的 PHP 应用程序混合时,或者当运行多个 Django 实例并希望以不同方式设置 TZ 时,可能会发生这种情况。
阅读:
http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Timezone_and_Locale_Settings
解决方案是使用 mod_wsgi 守护进程模式并将具有不同 TZ 要求的不同 Django 实例委托给不同的守护进程组。
为了确认,请发布有关您托管应用程序的方式的更多详细信息。即嵌入式模式与守护进程模式。您是否正在运行多个 Web 应用程序,无论是 PHP 还是 Python。
注意,我假设您说的 WSGI 实际上是指 mod_wsgi。如果是这样,那么请不要再使用术语 WSGI 来指代 mod_wsgi。Apache/mod_wsgi 模块是单独的 WSGI API 规范的实现。它们不是一回事。