mirror of https://github.com/jumpserver/jumpserver
fix: 修复 interval 周期任务不执行问题
parent
8ae6863266
commit
0fd5ab02e9
|
@ -1,7 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
import json
|
||||
import os
|
||||
|
||||
import redis_lock
|
||||
import redis
|
||||
|
@ -12,6 +11,7 @@ from django_celery_beat.models import (
|
|||
PeriodicTask, IntervalSchedule, CrontabSchedule, PeriodicTasks
|
||||
)
|
||||
|
||||
from common.utils.timezone import now
|
||||
from common.utils import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
@ -36,6 +36,8 @@ def create_or_update_celery_periodic_tasks(tasks):
|
|||
for name, detail in tasks.items():
|
||||
interval = None
|
||||
crontab = None
|
||||
last_run_at = None
|
||||
|
||||
try:
|
||||
IntervalSchedule.objects.all().count()
|
||||
except (ProgrammingError, OperationalError):
|
||||
|
@ -50,6 +52,7 @@ def create_or_update_celery_periodic_tasks(tasks):
|
|||
interval = IntervalSchedule.objects.filter(**kwargs).first()
|
||||
if interval is None:
|
||||
interval = IntervalSchedule.objects.create(**kwargs)
|
||||
last_run_at = now()
|
||||
elif isinstance(detail.get("crontab"), str):
|
||||
try:
|
||||
minute, hour, day, month, week = detail["crontab"].split()
|
||||
|
@ -75,7 +78,8 @@ def create_or_update_celery_periodic_tasks(tasks):
|
|||
enabled=detail.get('enabled', True),
|
||||
args=json.dumps(detail.get('args', [])),
|
||||
kwargs=json.dumps(detail.get('kwargs', {})),
|
||||
description=detail.get('description') or ''
|
||||
description=detail.get('description') or '',
|
||||
last_run_at=last_run_at,
|
||||
)
|
||||
task = PeriodicTask.objects.update_or_create(
|
||||
defaults=defaults, name=name,
|
||||
|
|
Loading…
Reference in New Issue