在apscheuler的工作安排中,下一次运行时间错过了几秒钟

时间:2015-05-14 10:57:57

标签: python apscheduler

我有一个执行cron作业的功能

def add_config_job(sched, job):

    module = JOB_METHODS.get(job["type"])
    if module is None:
        logging.warn("job type %r not supported", job["type"])
        return

    func = module.cron_job
    args = (job,)
    name = "%s__%s" % (job["name"], job["id"])
    start_date = job.get("start_date")
    run_at = job["run_at"]

    if isinstance(job["run_at"], dict):
        sched.add_cron_job(func, args=args, name=name, start_date=start_date,
                           **run_at)
    elif isinstance(job["run_at"], basestring):
        sched.add_date_job(func, args=args, name=name, date=run_at)
    else:
        logging.warn("unsupported 'run_at' type (%s given)", run_at)

我错误地将错误视为错误的工作

2015-05-14_00:00:02.76629 WARNING: Run time of job "Daily VPN Connexion__1 (trigger: cron[day='*', hour='0', minute='0', second='0'], next run at: 2015-05-14 00:00:00)" was missed by 0:00:02.493426
2015-05-14_00:00:02.79309 WARNING: Run time of job "Daily Report VPN Connection ALIGRO__1 (trigger: cron[day='*', hour='0', minute='0', second='0'], next run at: 2015-05-14 00:00:00)" was missed by 0:00:02.777450

这种错误的工作原因是什么?我们怎么能避免呢? 在某些页面中,我发现将misfire_grace_time从默认值1秒增加。在不错过的情况下,不应该在适当的时间安排调度程序?

1 个答案:

答案 0 :(得分:2)

似乎您的流程太忙,无法及时启动工作。 misfire_grace_time选项用于防止作业在不再相关后触发。如果某些事情需要在某个确切的时间发生并且延迟太多,那就根本不应该发生。增加misfire_grace_time是解决方案,如果发生这种情况,并且您不太关心准确性。