【问题标题】:Crontab: Setting Timezonecrontab:设置时区
【发布时间】: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


【解决方案1】:

一种解决方案可能是让 cron 在每小时 20 分钟后运行,然后让脚本检查它是否是正确的亚洲时间,如果是,则仅继续。

【讨论】:

  • 找不到更好的了。这似乎是我现在最好的选择。谢谢:)
【解决方案2】:

将此行放入您的 crontab 中:

TZ=Asia/Kolkata

【讨论】:

  • 嗨,克里斯。谢谢,但如果我没记错的话,这会将环境变量设置为指定的时区(在本例中为亚洲/加尔各答)。所以任何脚本/命令都将使用这个时区。但是脚本本身会根据服务器的时区执行,对吧?
猜你喜欢
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
  • 2015-11-12
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多