声明中是否有"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)
},
}