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