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:
|
class Scheduler:
|
||||||
timezone = settings.TIME_ZONE
|
timezone = settings.TIME_ZONE
|
||||||
week_map = {
|
week_map = {
|
||||||
|
'-': '-',
|
||||||
'*': '*',
|
'*': '*',
|
||||||
'7': '6',
|
'7': '6',
|
||||||
'0': '6',
|
'0': '6',
|
||||||
|
@ -43,6 +44,10 @@ class Scheduler:
|
||||||
EVENT_SCHEDULER_SHUTDOWN | EVENT_JOB_ERROR | EVENT_JOB_MAX_INSTANCES
|
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
|
@classmethod
|
||||||
def parse_trigger(cls, trigger, trigger_args):
|
def parse_trigger(cls, trigger, trigger_args):
|
||||||
if trigger == 'interval':
|
if trigger == 'interval':
|
||||||
|
@ -52,7 +57,7 @@ class Scheduler:
|
||||||
elif trigger == 'cron':
|
elif trigger == 'cron':
|
||||||
args = json.loads(trigger_args) if not isinstance(trigger_args, dict) else trigger_args
|
args = json.loads(trigger_args) if not isinstance(trigger_args, dict) else trigger_args
|
||||||
minute, hour, day, month, week = args['rule'].split()
|
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,
|
return CronTrigger(minute=minute, hour=hour, day=day, month=month, day_of_week=week,
|
||||||
start_date=args['start'], end_date=args['stop'])
|
start_date=args['start'], end_date=args['stop'])
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -163,7 +163,7 @@ def next_run_time(request):
|
||||||
if error is None:
|
if error is None:
|
||||||
try:
|
try:
|
||||||
minute, hour, day, month, week = form.rule.split()
|
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,
|
trigger = CronTrigger(minute=minute, hour=hour, day=day, month=month, day_of_week=week,
|
||||||
start_date=form.start, end_date=form.stop)
|
start_date=form.start, end_date=form.stop)
|
||||||
except (ValueError, KeyError):
|
except (ValueError, KeyError):
|
||||||
|
|
Loading…
Reference in New Issue