Crontab: настройка часового пояса

У меня есть веб-сайт на основе django, установленный на общем веб-сервере. Я планирую иметь несколько заданий cron для автоматизации создания отчетов, отправки электронных писем и т. д. Проблема в том, что часовой пояс общего сервера — «America/New_York» (поскольку это общий сервер, у меня нет разрешения на его изменение ), в то время как мне нужно запустить cron в соответствии с часовым поясом «Азия/Калькутта». Как я могу этого добиться?

Спасибо

Обновлено после ответа Криса

Я установил для своей локальной системы TZ «Америка/Нью-Йорк».

$ 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 в соответствии с часовым поясом Азии/Калькутты?


person Konstant    schedule 22.07.2011    source источник
comment
Я собирался предложить просто компенсировать время в crontab, но потом понял, что это, вероятно, не сработает, если учитывать использование летнего времени.   -  person moberley    schedule 22.07.2011
comment
Таким образом, единственный способ решить эту проблему — динамически создавать записи в crontab.   -  person Konstant    schedule 22.07.2011
comment
Вместо datetime.now() используйте datetime.utcnow() и смещение соответственно. Подробнее читайте в этой статье: lucumr.pocoo.org/2011/7 /15/eppur-si-muove.   -  person Kiwi    schedule 22.07.2011


Ответы (2)


Одно из решений может заключаться в том, чтобы cron запускался в 20 минут каждого часа, а затем скрипт проверял, является ли это правильным азиатским временем, и продолжал только в том случае, если это так.

person jcfollower    schedule 22.07.2011
comment
ничего лучше не нашел. это кажется лучшим вариантом для меня прямо сейчас. Благодарность :) - person Konstant; 28.07.2011

Поместите эту строку в свой crontab:

TZ=Asia/Kolkata
person Chris Jester-Young    schedule 22.07.2011
comment
Привет Крис. Спасибо, но если я не ошибаюсь, это установит переменную среды в качестве указанного часового пояса (в данном случае Азия/Калькутта). Таким образом, любые скрипты/команды будут использовать этот часовой пояс. Но сам скрипт будет выполняться по часовому поясу сервера, верно? - person Konstant; 22.07.2011