U 优化服务进程首次启动

pull/462/head v3.0.5
vapao 2022-03-12 15:36:49 +08:00
parent f421729752
commit 5bd1f48172
2 changed files with 28 additions and 20 deletions

View File

@ -7,6 +7,7 @@ from apscheduler.triggers.interval import IntervalTrigger
from django_redis import get_redis_connection from django_redis import get_redis_connection
from django.conf import settings from django.conf import settings
from django.db import connections from django.db import connections
from django.db.utils import DatabaseError
from apps.monitor.models import Detection from apps.monitor.models import Detection
from libs import AttrDict, human_datetime from libs import AttrDict, human_datetime
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -32,17 +33,20 @@ class Scheduler:
def _init(self): def _init(self):
self.scheduler.start() self.scheduler.start()
for item in Detection.objects.filter(is_active=True): try:
now = datetime.now() for item in Detection.objects.filter(is_active=True):
trigger = IntervalTrigger(minutes=int(item.rate), timezone=self.timezone) now = datetime.now()
self.scheduler.add_job( trigger = IntervalTrigger(minutes=int(item.rate), timezone=self.timezone)
self._dispatch, self.scheduler.add_job(
trigger, self._dispatch,
id=str(item.id), trigger,
args=(item.id, item.type, item.targets, item.extra, item.threshold, item.quiet), id=str(item.id),
next_run_time=now + timedelta(seconds=randint(0, 60)) 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() )
connections.close_all()
except DatabaseError:
pass
def run(self): def run(self):
rds_cli = get_redis_connection() rds_cli = get_redis_connection()

View File

@ -8,6 +8,7 @@ from apscheduler.triggers.date import DateTrigger
from apscheduler.triggers.cron import CronTrigger from apscheduler.triggers.cron import CronTrigger
from django_redis import get_redis_connection from django_redis import get_redis_connection
from django.db import connections from django.db import connections
from django.db.utils import DatabaseError
from apps.schedule.models import Task, History from apps.schedule.models import Task, History
from apps.schedule.builtin import auto_run_by_day, auto_run_by_minute from apps.schedule.builtin import auto_run_by_day, auto_run_by_minute
from django.conf import settings from django.conf import settings
@ -78,15 +79,18 @@ class Scheduler:
def _init(self): def _init(self):
self.scheduler.start() self.scheduler.start()
self._init_builtin_jobs() self._init_builtin_jobs()
for task in Task.objects.filter(is_active=True): try:
trigger = self.parse_trigger(task.trigger, task.trigger_args) for task in Task.objects.filter(is_active=True):
self.scheduler.add_job( trigger = self.parse_trigger(task.trigger, task.trigger_args)
self._dispatch, self.scheduler.add_job(
trigger, self._dispatch,
id=str(task.id), trigger,
args=(task.id, task.command, json.loads(task.targets)), id=str(task.id),
) args=(task.id, task.command, json.loads(task.targets)),
connections.close_all() )
connections.close_all()
except DatabaseError:
pass
def run(self): def run(self):
rds_cli = get_redis_connection() rds_cli = get_redis_connection()