是否可以动态禁用芹菜调度程序任务



声明中是否有"enabled"字段可以动态启用/禁用计划任务?

CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': timedelta(seconds=30),
'args': (16, 16)
'enabled': env['PROD'] == 'True' <--- dynamically enable/disable task?
},
}

否则,我将不得不像一样动态构建dict

if env['PROD'] == 'True':
CELERYBEAT_SCHEDULE['add-every-30-seconds'] = {...}

enabled字段看起来更干净

另一种方法是破解schedule字段,如:


class NoSchedule(BaseSchedule):
def is_due(self, last_run_at):
return schedstate(is_due=False, next=99999999)
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': timedelta(seconds=30) if env['PROD'] == 'True' else NoSchedule(),
'args': (16, 16)
},
}

最新更新