Exemple #1
0
 def _handle_event(self, event):
     close_old_connections()
     obj = SimpleLazyObject(lambda: Detection.objects.filter(pk=event.job_id).first())
     if event.code == EVENT_SCHEDULER_SHUTDOWN:
         logger.info(f'EVENT_SCHEDULER_SHUTDOWN: {event}')
         Notify.make_notify('monitor', '1', '调度器已关闭', '调度器意外关闭,你可以在github上提交issue', False)
     elif event.code == EVENT_JOB_MAX_INSTANCES:
         logger.info(f'EVENT_JOB_MAX_INSTANCES: {event}')
         Notify.make_notify('monitor', '1', f'{obj.name} - 达到调度实例上限', '一般为上个周期的执行任务还未结束,请增加调度间隔或减少任务执行耗时')
     elif event.code == EVENT_JOB_ERROR:
         logger.info(f'EVENT_JOB_ERROR: job_id {event.job_id} exception: {event.exception}')
         Notify.make_notify('monitor', '1', f'{obj.name} - 执行异常', f'{event.exception}')
     elif event.code == EVENT_JOB_EXECUTED:
         obj = Detection.objects.filter(pk=event.job_id).first()
         old_status = obj.latest_status
         obj.latest_status = 0 if event.retval else 1
         obj.latest_run_time = human_datetime(event.scheduled_run_time)
         if old_status in [0, None] and event.retval is False:
             obj.latest_fault_time = int(time.time())
         if obj.latest_status == 0:
             obj.latest_notify_time = 0
             obj.fault_times = 0
         else:
             obj.fault_times += 1
         obj.save()
         self._handle_notify(obj, old_status)