# coding=utf-8 """ @Author: tangwy @FileName: user_cron_pg.py @DateTime: 2024/7/09 14:19 @Description: 定时清洗es数据 """ from __future__ import unicode_literals import random,string import traceback,json import time from datetime import datetime,timedelta import calendar from uebaMetricsAnalysis.utils.ext_logging import logger_cron from uebaMetricsAnalysis.utils.db2json import DBUtils, DBType from uebaMetricsAnalysis.utils.base_dataclean_pg import entry JOB_STATUS ={ "RUNNING":1, "FINISH":2, "ERROR":3 } class UserCron: #生成job_id def generate_job_id(self): timestamp = int(time.time() * 1000) random_letters = ''.join(random.choice(string.ascii_letters) for _ in range(7)) return str(timestamp) + random_letters #每5分钟执行一次 def processing(self): logger_cron.info("JOB:接收到执行指令") job_id =self.generate_job_id() task_run_count =0 try: start,end,status,run_count,jobid= DBUtils.get_job_period() if jobid !="": job_id=jobid logger_cron.info("JOB:"+job_id+"开始执行") if status ==1: logger_cron.info("JOB:"+job_id+"正在运行中不执行") return if status==3 and run_count >3: logger_cron.info("JOB:"+job_id+"失败次数大于3不执行") return if start is None or end is None: logger_cron.info("JOB:"+job_id+"结束时间大于(服务器时间-15分钟)不执行") return task_run_count = run_count+1 logger_cron.info("JOB:"+job_id+"运行参数:{},{}".format(start,end)) logger_cron.info("JOB:"+job_id+"准备将job写入job表") DBUtils.insert_job_record(job_id,start,end,JOB_STATUS.get("RUNNING")) logger_cron.info("JOB:"+job_id+"完成job表写入") logger_cron.info("JOB:"+job_id+"准备获取es数据") entry(start,end,job_id) logger_cron.info("JOB:"+job_id+"完成es数据获取") DBUtils.write_job_status(job_id,JOB_STATUS.get("FINISH"),"",task_run_count) logger_cron.info("JOB:"+job_id+"更新job表状态完成") except Exception ,e: err_info=traceback.format_exc() logger_cron.error("JOB:"+job_id+"执行失败:"+err_info) DBUtils.write_job_status(job_id,JOB_STATUS.get("ERROR"),err_info,task_run_count) raise if __name__ == '__main__': UserCron().processing()