diff --git a/spug_api/apps/monitor/scheduler.py b/spug_api/apps/monitor/scheduler.py index 148fdbf..897327a 100644 --- a/spug_api/apps/monitor/scheduler.py +++ b/spug_api/apps/monitor/scheduler.py @@ -7,6 +7,7 @@ from apscheduler.triggers.interval import IntervalTrigger from django_redis import get_redis_connection from django.conf import settings from django.db import connections +from django.db.utils import DatabaseError from apps.monitor.models import Detection from libs import AttrDict, human_datetime from datetime import datetime, timedelta @@ -32,17 +33,20 @@ class Scheduler: def _init(self): self.scheduler.start() - for item in Detection.objects.filter(is_active=True): - now = datetime.now() - trigger = IntervalTrigger(minutes=int(item.rate), timezone=self.timezone) - self.scheduler.add_job( - self._dispatch, - trigger, - id=str(item.id), - args=(item.id, item.type, item.targets, item.extra, item.threshold, item.quiet), - next_run_time=now + timedelta(seconds=randint(0, 60)) - ) - connections.close_all() + try: + for item in Detection.objects.filter(is_active=True): + now = datetime.now() + trigger = IntervalTrigger(minutes=int(item.rate), timezone=self.timezone) + self.scheduler.add_job( + self._dispatch, + trigger, + id=str(item.id), + args=(item.id, item.type, item.targets, item.extra, item.threshold, item.quiet), + next_run_time=now + timedelta(seconds=randint(0, 60)) + ) + connections.close_all() + except DatabaseError: + pass def run(self): rds_cli = get_redis_connection() diff --git a/spug_api/apps/schedule/scheduler.py b/spug_api/apps/schedule/scheduler.py index 11a49d9..506c3b5 100644 --- a/spug_api/apps/schedule/scheduler.py +++ b/spug_api/apps/schedule/scheduler.py @@ -8,6 +8,7 @@ from apscheduler.triggers.date import DateTrigger from apscheduler.triggers.cron import CronTrigger from django_redis import get_redis_connection from django.db import connections +from django.db.utils import DatabaseError from apps.schedule.models import Task, History from apps.schedule.builtin import auto_run_by_day, auto_run_by_minute from django.conf import settings @@ -78,15 +79,18 @@ class Scheduler: def _init(self): self.scheduler.start() self._init_builtin_jobs() - for task in Task.objects.filter(is_active=True): - trigger = self.parse_trigger(task.trigger, task.trigger_args) - self.scheduler.add_job( - self._dispatch, - trigger, - id=str(task.id), - args=(task.id, task.command, json.loads(task.targets)), - ) - connections.close_all() + try: + for task in Task.objects.filter(is_active=True): + trigger = self.parse_trigger(task.trigger, task.trigger_args) + self.scheduler.add_job( + self._dispatch, + trigger, + id=str(task.id), + args=(task.id, task.command, json.loads(task.targets)), + ) + connections.close_all() + except DatabaseError: + pass def run(self): rds_cli = get_redis_connection()