mirror of https://github.com/openspug/spug
add scheduler to support 1-5 week
parent
773c2c85fa
commit
a28300a641
|
@ -25,6 +25,7 @@ SCHEDULE_WORKER_KEY = settings.SCHEDULE_WORKER_KEY
|
|||
class Scheduler:
|
||||
timezone = settings.TIME_ZONE
|
||||
week_map = {
|
||||
'-': '-',
|
||||
'*': '*',
|
||||
'7': '6',
|
||||
'0': '6',
|
||||
|
@ -43,6 +44,10 @@ class Scheduler:
|
|||
EVENT_SCHEDULER_SHUTDOWN | EVENT_JOB_ERROR | EVENT_JOB_MAX_INSTANCES
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def covert_week(cls, week_str):
|
||||
return ''.join(map(lambda x: cls.week_map[x], week_str))
|
||||
|
||||
@classmethod
|
||||
def parse_trigger(cls, trigger, trigger_args):
|
||||
if trigger == 'interval':
|
||||
|
@ -52,7 +57,7 @@ class Scheduler:
|
|||
elif trigger == 'cron':
|
||||
args = json.loads(trigger_args) if not isinstance(trigger_args, dict) else trigger_args
|
||||
minute, hour, day, month, week = args['rule'].split()
|
||||
week = cls.week_map[week]
|
||||
week = cls.covert_week(week)
|
||||
return CronTrigger(minute=minute, hour=hour, day=day, month=month, day_of_week=week,
|
||||
start_date=args['start'], end_date=args['stop'])
|
||||
else:
|
||||
|
|
|
@ -163,7 +163,7 @@ def next_run_time(request):
|
|||
if error is None:
|
||||
try:
|
||||
minute, hour, day, month, week = form.rule.split()
|
||||
week = Scheduler.week_map[week]
|
||||
week = Scheduler.covert_week(week)
|
||||
trigger = CronTrigger(minute=minute, hour=hour, day=day, month=month, day_of_week=week,
|
||||
start_date=form.start, end_date=form.stop)
|
||||
except (ValueError, KeyError):
|
||||
|
|
Loading…
Reference in New Issue