调试App Engine Python代码时,为什么时间戳不正确?

boa*_*der 5 python google-app-engine

在我的调试器下:

logging.info("TZ = %s -- It is now: %s", os.environ['TZ'], time.ctime())
TZ = UTC -- It is now: Mon Oct 17 12:10:44 2011
Run Code Online (Sandbox Code Playgroud)

在App Engine Launcher下:

logging.info("TZ = %s -- It is now: %s", os.environ['TZ'], time.ctime())
TZ = UTC -- It is now: Mon Oct 17 17:09:24 2011
Run Code Online (Sandbox Code Playgroud)

那么我设置错了什么?这不仅影响time.ctime(),而且还影响到调试数据库中的所有数据.我希望调试器在与应用程序引擎启动器相同的"时间范围"中运行,因为数据库中的时间戳,并且调试器比启动器慢,所以我不想一直使用它.

小智 5

问题是Windows上使用Python 2.5的C运行时函数似乎在第一次调用时间或ctime时缓存TZ环境变量的值.以下将以本地时间而不是UTC显示时间:

import time, os
time.time()
os.environ['TZ'] = 'UTC'
print time.ctime()
Run Code Online (Sandbox Code Playgroud)

Wing的调试器在运行任何AppEngine代码之前调用time(),因此捕获了TZ的初始值.解决方法是通过项目属性对话框在环境变量中设置TZ = UTC.