def job_report_collection0(): try: process = Process(target=globals()["report_collection"], args=(Id0, tname0)) process.start() process.join() except Exception as e: traceback.print_exc() logger = initLogger("datas/logs/" + Id0, Id0) logger.error("任务执行失败: " + str(e))
def job_green_case_mi(): try: process = Process(target=globals()["green_case_mi"], args=(Id2, )) process.start() process.join() except SystemExit: pass except Exception as e: traceback.print_exc() logger = initLogger("datas/logs/" + Id2, Id2) logger.error("任务执行失败: " + str(e))
def __init__(self, Id, config, path, subject): os.makedirs("datas/logs/", exist_ok=True) os.makedirs("datas/tmps/", exist_ok=True) self.logger = initLogger("datas/logs/" + Id, Id) self.config = config self.subject = subject filename = os.path.basename(path) # 文件名 self.filein = path self.fileout = os.path.join("datas/tmps/" + filename) self.dataDir = os.path.join( "datas/tmps/", os.path.basename(os.path.splitext(self.fileout)[0])) os.makedirs(self.dataDir, exist_ok=True)
def __init__(self, Id, tname, port): self.retrys = 0 self.port = port self.logger = initLogger("datas/logs/" + Id, Id) wb = load_workbook(tname) # 预发送人 preSheet = wb["预发送"] if not preSheet: self.logger.warn("无法找到预发送人表") self.preSend = [] else: self.preSend = [ str(cell.value) for cell in preSheet["A"] if str(cell.value) != "None" ] # list(preSheet.columns)[0]] self.logger.debug("预发送人: {0}".format(self.preSend))
def initjob(): tname = "jobs/WBotMonitorJob/微信机器人配置文件.xlsx" # 模版文件 trigger, kwargs, config = getConfig(tname) # @UnusedVariable # 初始日志文件 logger = initLogger("datas/logs/" + Id, Id) wbmjob = WBotMonitor(logger, config, Id) # 涉及到类全局变量,需要放在外面初始化 @AutoReportGlobals.Scheduler.scheduled_job(trigger, id=Id, name=Subject, misfire_grace_time=86400, **kwargs) def job(): try: wbmjob.start() except Exception as e: traceback.print_exc() logger.error("任务执行失败: " + str(e))
def initjob(): tname = "jobs/EmailMonitorJob/邮件监控配置文件.xlsx" # 模版文件 trigger, kwargs, config = getConfig(tname) # @UnusedVariable # 初始日志文件 logger = initLogger("datas/logs/" + Id, Id) emailjob = EmailMonitor(logger) # 涉及到类全局变量,需要放在外面初始化 # minutes -- 每1分钟监听一次 # seconds -- 每40秒监听一次 # @AutoReportGlobals.Scheduler.scheduled_job("interval", id=Id, name="邮件监听", minutes=1) # 修改为每天早上8点开始到下午19点每隔1分钟 # @AutoReportGlobals.Scheduler.scheduled_job("cron", id=Id, name="邮件监听", minute="0-59", hour="8-19") @AutoReportGlobals.Scheduler.scheduled_job(trigger, id=Id, name=Subject, **kwargs) def job_email_monitor(): try: emailjob.start() except Exception as e: traceback.print_exc() logger.error("任务执行失败: " + str(e))
def __init__(self, Id, tname): self.logger = initLogger("datas/logs/" + Id, Id) # 加载模拟头 Headers = { "Accept": "image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*", "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2)", "Content-Type": "application/x-www-form-urlencoded", "Connection": "Keep-Alive", "Cache-Control": "no-cache", "Referer": "", "Cookie": "", } # 加载地区指标代码 # Codes = json.load(open("configs/codes.txt", "r", encoding="gbk")) Codes = yaml.load( open(os.path.join(ConfigsDir, "codes.txt"), "r", encoding="gbk").read()) # 加载cookies文件 Cookies = yaml.load( open(os.path.join(ConfigsDir, "cookies.txt"), "r", encoding="gbk").read()) # Cookies = json.load( # open(os.path.join(ConfigsDir, "cookies.txt"), "r", encoding="gbk")) # 加载referers文件 Referers = yaml.load( open(os.path.join(ConfigsDir, "referers.txt"), "r", encoding="gbk").read()) # Referers = json.load( # open(os.path.join(ConfigsDir, "referers.txt"), "r", encoding="gbk")) # 加载网址 Urls = yaml.load( open(os.path.join(ConfigsDir, "urls.txt"), "r", encoding="gbk").read()) # Urls = json.load( # open(os.path.join(ConfigsDir, "urls.txt"), "r", encoding="gbk")) # 加载表单 Params = yaml.load( open(os.path.join(ConfigsDir, "params.txt"), "r", encoding="gbk").read()) # Params = json.load( # open(os.path.join(ConfigsDir, "params.txt"), "r", encoding="gbk")) # 加载配置 Config = yaml.load( open(os.path.join(ConfigsDir, "config.txt"), "r", encoding="gbk").read()) # Config = json.load( # open(os.path.join(ConfigsDir, "config.txt"), "r", encoding="gbk")) # 随机数 RandomNum = str(datetime.now().day).zfill(2) + "090230123" # 第一步先获取动态的host self.form_bg = "http://{host}/sireports/userdefined_reports/css/ng/nresources/UI/images/form_bg.png" self.hosts = Urls.get("hosts", "").split(";") # print("hosts: ", hosts) self.logger.debug("hosts: %s" % self.hosts) # 动态加载采集模块 modules = Config.get("modules", {}) # print("modules:", modules) self.logger.debug("modules: %s" % modules) self.ModulesCollection = [] for key, value in modules.items(): self.logger.info("load module: %s %s" % (key, value)) # print("load module: ", key, value, "modules." + key) # __import__(key, fromlist=("modules", key)) Class = __import__("jobs.ReportCollectionJob.modules." + key, fromlist=[key]) # print("Class: ", Class) self.logger.debug("Class: %s" % Class) self.ModulesCollection.append( getattr(Class, key)(self.logger, Config.copy(), Codes, Headers.copy(), Cookies, Referers, RandomNum, Urls, Params, tname)) # self.yxbl = YxBlCollection(logger, Config.copy(), Codes, Headers.copy(), Cookies, Referers, RandomNum, Urls, Params) # self.yxcz = YxCzCollection(logger, Config.copy(), Codes, Headers.copy(), Cookies, Referers, RandomNum, Urls, Params) # self.czmx = CzMxCollection(logger, Config.copy(), Codes, Headers.copy(), Cookies, Referers, RandomNum, Urls, Params) # self.cpbg = CpBgCollection(logger, Config.copy(), Codes, Headers.copy(), Cookies, Referers, RandomNum, Urls, Params) # 多线程执行器 self.executor = ThreadPoolExecutor(max_workers=5)
def __init__(self, Id): self.Id = Id self.data_queue = Queue() self._start_time = datetime.now() self.logger = initLogger("datas/logs/" + Id, Id)
def initjob(): Id0 = Id + "-0" tname0 = "jobs/Reports/FourthJob/岁末营销日报.xlsx" trigger0, kwargs0, config0 = getConfig(tname0) # @UnusedVariable @AutoReportGlobals.Scheduler.scheduled_job(trigger0, id=Id0, name=Subject + Id0, **kwargs0) def job_broad_band(): try: process = Process( target=globals()["broad_band"], args=(Id0, tname0)) process.start() process.join() except Exception as e: traceback.print_exc() logger = initLogger("datas/logs/" + Id0, Id0) logger.error("任务执行失败: " + str(e)) def init(): if not Enable: return initjob() # 初始任务 if __name__ == "__main__": tname = "岁末营销日报.xlsx" trigger, kwargs, config = getConfig(tname) initLogger("../../../datas/logs/" + Id, Id) fdjob = FileDaily(Id, config, tname, Subject) fdjob.start()