16

私は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 秒から増やしていることがわかりました。見逃すことなく適切な時間にスケジューラーのスケジュールであってはなりませんか?

4

1 に答える 1

14

プロセスが忙しすぎて、タイムリーにジョブを開始できないようです。このmisfire_grace_timeオプションは、関連性がなくなった後にジョブが起動するのを防ぐためにあります。何かが正確な時間に発生する必要があり、それが遅すぎる場合、それはまったく発生すべきではありません。misfire_grace_timeこれが起こっていて、精度をあまり気にしない場合は、増やすことが解決策です。

于 2015-05-15T11:12:42.240 に答える