3

我正在按照这个来安排我在 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(我设置了 TIME_ZONE settings.py)设置任何时区信息?如果是这样,怎么做?还是我错过了什么?

4

2 回答 2

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.')
于 2021-02-17T17:23:23.280 回答
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.')
于 2021-07-06T06:15:31.607 回答