diff --git a/spug_api/apps/schedule/scheduler.py b/spug_api/apps/schedule/scheduler.py index 827d5e3..0857877 100644 --- a/spug_api/apps/schedule/scheduler.py +++ b/spug_api/apps/schedule/scheduler.py @@ -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: diff --git a/spug_api/apps/schedule/views.py b/spug_api/apps/schedule/views.py index 561b966..c0bb032 100644 --- a/spug_api/apps/schedule/views.py +++ b/spug_api/apps/schedule/views.py @@ -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):