【发布时间】:2011-10-10 17:45:44
【问题描述】:
我在共享网络服务器上安装了一个基于 django 的网站。我计划有几个 cron 作业来自动创建报告、发送电子邮件等。问题是共享服务器的时区是“America/New_York”(因为它是共享服务器,所以我无权更改它) 而我必须根据“亚洲/加尔各答”时区运行 crons。我怎样才能做到这一点?
谢谢
在克里斯回答后更新
我将本地系统 TZ 设置为“America/New_York”
$ crontab -e
TZ=Asia/Kolkata
#(Accoring to some timezone dt: 21 July 11, time: 20:20)
20 20 * * * python test.py > test_log.txt
------test.py ------
from datetime import datetime as dt
print dt.now()
-----test_log.txt ----
2011-07-22 08:42:02.592777
这是根据 tz='Asia/Kolkata' 的时间。我的问题是:我们可以根据亚洲/加尔各答时区执行脚本 test.py 吗?
【问题讨论】:
-
我本来建议只是在 crontab 中抵消时间,但后来我意识到,如果考虑到夏令时的使用,这可能实际上不会起作用。
-
所以解决这个问题的唯一方法是动态创建 crontab 条目。
-
考虑 datetime.utcnow() 而不是 datetime.now() 并相应地偏移。阅读本文了解更多信息:lucumr.pocoo.org/2011/7/15/eppur-si-muove。
标签: python cron timezone crontab