def add_cron(self, cron_instance): if not isinstance(cron_instance, Cron): raise TypeError('please add correct cron!') if cron_instance.trigger_type == 'interval': seconds = cron_instance.trigger_args.get('seconds') if not isinstance(seconds, int) and not common.can_convert_to_int(seconds): raise TypeError('请输入合法的时间间隔!') seconds = int(seconds) if seconds <= 0: raise TypeError('请输入大于0的时间间隔!') job = self.scheduler.add_job( func=cron_instance.cron_mission, trigger=cron_instance.trigger_type, seconds=seconds, replace_existing=self.is_replace_existing, coalesce=True, id=cron_instance.get_id(), max_instances=5, jitter=0) # 玄学,新增job的时候不用加args,直接加对象调用的func elif cron_instance.trigger_type == 'date': run_date = cron_instance.trigger_args.get('run_date') # TODO 判断run_date类型 job = self.scheduler.add_job( func=cron_instance.cron_mission, trigger=cron_instance.trigger_type, run_date=run_date, replace_existing=self.is_replace_existing, coalesce=True, id=cron_instance.get_id()) # 玄学,新增job的时候不用加args,直接加对象调用的func elif cron_instance.trigger_type == 'cron': raise TypeError('暂时不支持 trigger_type 等于 \'cron\'') return cron_instance.get_id()
def wait_for(): # 等待seconds秒 try: if request.method == 'POST': data = request.json elif request.method == 'GET': data = request.args if data.get("seconds") and can_convert_to_int(data.get("seconds")): time.sleep(int(data.get('seconds'))) return jsonify({ 'status': 'ok', 'data': { 'waitFor': data.get("seconds") } }) else: return jsonify({ 'status': 'failed', 'data': { 'error': "required param: seconds. type: int" } }) except BaseException as e: current_app.logger.error("wait For failed. - %s" % str(e)) return jsonify({ 'status': 'failed', 'data': 'wait For failed. - %s' % e })
def add_cron(self, cron_instance): try: if not isinstance(cron_instance, Cron): raise TypeError('please add correct cron!') if cron_instance.trigger_type == 'interval': seconds = cron_instance.trigger_args.get('seconds') if not isinstance( seconds, int) and not common.can_convert_to_int(seconds): raise TypeError('please set correct time interval') seconds = int(seconds) if seconds <= 0: raise ValueError('please set interval > 0') job = self.scheduler.add_job( func=cron_instance.cron_mission, trigger=cron_instance.trigger_type, seconds=seconds, replace_existing=self.is_replace_existing, coalesce=True, id=cron_instance.get_cron_job_id(), max_instances=5, jitter=0) elif cron_instance.trigger_type == 'date': run_date = cron_instance.trigger_args.get('run_date') # TODO 判断run_date类型 job = self.scheduler.add_job( func=cron_instance.cron_mission, trigger=cron_instance.trigger_type, run_date=run_date, replace_existing=self.is_replace_existing, coalesce=True, id=cron_instance.get_cron_job_id()) elif cron_instance.trigger_type == 'cron': raise TypeError('暂时不支持 trigger_type 等于 \'cron\'') return cron_instance.get_cron_job_id() except BaseException as e: with app.app_context(): current_app.logger.error("add_cron failed. - %s" % str(e))