如何防止芹菜周期性任务延迟执行?

时间:2015-08-05 23:21:27

标签: python celery celerybeat

我在Celery中有一些与Celery Beat / Crontab一起安排的任务,如下所示:

CELERYBEAT_SCHEDULE = {
    'task-1': {
        'task': 'tasks.run_task1',
        'schedule': crontab(hour=5, minute=30, day_of_week='mon-fri'),
    },
    'task-2': {
        'task': 'tasks.run_task2',
        'schedule': crontab(hour=12, minute=0, day_of_week='sun-fri'),
    },
}

有时我关闭了Celery进程,当我在下午4点将其重新打开时,它将在当天早些时候运行任务。我怎样才能使这些任务只在实际安排的约5分钟内运行而不是在当天晚些时候开始运行?

1 个答案:

答案 0 :(得分:1)

使用expires选项:

CELERYBEAT_SCHEDULE = {
    'task-1': {
        'task': 'tasks.run_task1',
        'schedule': crontab(hour=5, minute=30, day_of_week='mon-fri'),
        'options': {
                    'expires': 5*60,
                    },
    },
    'task-2': {
        'task': 'tasks.run_task2',
        'schedule': crontab(hour=12, minute=0, day_of_week='sun-fri'),
        'options': {
                    'expires': 5*60,
                    },
    },
}