A api add clean alarms job

pull/22/head
雷二猛 2019-12-06 00:05:41 +08:00
parent 5a7f1ac7a4
commit e76ed02787
2 changed files with 21 additions and 8 deletions

View File

@ -0,0 +1,7 @@
from apps.alarm.models import Alarm
from datetime import datetime, timedelta
def auto_clean_records():
date = datetime.now() - timedelta(days=30)
Alarm.objects.filter(created_at__lt=date.strftime('%Y-%m-%d')).delete()

View File

@ -5,6 +5,7 @@ from apscheduler import events
from django_redis import get_redis_connection
from apps.schedule.models import Task
from apps.schedule.executors import dispatch
from apps.alarm.utils import auto_clean_records
from django.conf import settings
from libs import AttrDict, human_time
import logging
@ -40,17 +41,22 @@ class Scheduler:
if event.code == events.EVENT_JOB_MISSED:
logger.info(f'EVENT_JOB_MISSED: job_id {event.job_id}')
if event.code == events.EVENT_JOB_EXECUTED:
score = 0
for item in event.retval:
score += 1 if item[1] else 0
Task.objects.filter(pk=event.job_id).update(
latest_status=2 if score == len(event.retval) else 1 if score else 0,
latest_run_time=human_time(event.scheduled_run_time),
latest_output=json.dumps(event.retval)
)
if event.retval:
score = 0
for item in event.retval:
score += 1 if item[1] else 0
Task.objects.filter(pk=event.job_id).update(
latest_status=2 if score == len(event.retval) else 1 if score else 0,
latest_run_time=human_time(event.scheduled_run_time),
latest_output=json.dumps(event.retval)
)
def _init_builtin_jobs(self):
self.scheduler.add_job(auto_clean_records, 'cron', hour=0, minute=0)
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(