From e76ed0278746ae5b0bf563d259833f482fd2eb82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E4=BA=8C=E7=8C=9B?= Date: Fri, 6 Dec 2019 00:05:41 +0800 Subject: [PATCH] A api add clean alarms job --- spug_api/apps/alarm/utils.py | 7 +++++++ spug_api/apps/schedule/scheduler.py | 22 ++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 spug_api/apps/alarm/utils.py diff --git a/spug_api/apps/alarm/utils.py b/spug_api/apps/alarm/utils.py new file mode 100644 index 0000000..a903965 --- /dev/null +++ b/spug_api/apps/alarm/utils.py @@ -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() diff --git a/spug_api/apps/schedule/scheduler.py b/spug_api/apps/schedule/scheduler.py index f5e67de..a2c593a 100644 --- a/spug_api/apps/schedule/scheduler.py +++ b/spug_api/apps/schedule/scheduler.py @@ -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(