From 5bd1f48172b159b4247fa0393f7b74babc0aed53 Mon Sep 17 00:00:00 2001 From: vapao Date: Sat, 12 Mar 2022 15:36:49 +0800 Subject: [PATCH] =?UTF-8?q?U=20=E4=BC=98=E5=8C=96=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E8=BF=9B=E7=A8=8B=E9=A6=96=E6=AC=A1=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spug_api/apps/monitor/scheduler.py | 26 +++++++++++++++----------- spug_api/apps/schedule/scheduler.py | 22 +++++++++++++--------- 2 files changed, 28 insertions(+), 20 deletions(-) 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()