Heroku Apscheduler:定时工作可以但不适合安排工作

时间:2015-08-14 07:39:51

标签: heroku apscheduler

我正在关注this在Heroku上安排我的Django cron工作。

Procfile

web: gunicorn tango.wsgi --log-file -
clock: python createStatistics.py

createStatistics.py

from apscheduler.schedulers.blocking import BlockingScheduler

sched = BlockingScheduler()

@sched.scheduled_job('interval', minutes=1)
def timed_job():
    print('This job is run every minute.')

@sched.scheduled_job('cron', day=14, hour=15, minute=37)
def scheduled_job():
    print('This job is run on day 14 at minute 37, 3pm.')

sched.start()

timed_job运行正常,但scheduled_job无效。我是否需要为apscheduler设置任何时区信息(我在settings.py中设置了TIME_ZONE)?如果是这样,怎么样?或者我错过了什么?

2 个答案:

答案 0 :(得分:0)

特定于 Heroku,由于我尚未弄清楚的原因,您似乎需要在 cron 作业上指定可选的 id 字段才能使它们工作。所以 cron、job 定义现在看起来像这样。

@sched.scheduled_job('cron', id="job_1", day=14, hour=15, minute=37)
def scheduled_job():
    print('This job is run on day 14 at minute 37, 3pm.')

答案 1 :(得分:0)

您必须在每个作业中指定时区,否则 Heroku 将在 UTC 时区运行。

@sched.scheduled_job('cron', day=14, hour=15, minute=37, timezone=YOUR_TIME_ZONE)
def scheduled_job():
    print('This job is run on day 14 at minute 37, 3pm.')