实现定时任务和多线程
import jsonpath
from api.executor_log import ExecutorLogger
import requests
from test.wayne_test2 import login
requests.packages.urllib3.disable_warnings()
from client.env import ENV
requests.packages.urllib3.disable_warnings()
import configparser
log = ExecutorLogger()
s = requests.Session()
import time
from threading import Timer
import timeout_decorator
config=configparser.ConfigParser()
config.read("rule_core.ini")
@login(event='core', username='wayne@wayne.com', password='Qq1234567!', s=s)
def get_rule(event1):
'''实现业务的脚本'''
url = ENV.get(event1).get('urls').get('host') + '/api/core/v1/abs/clock/rule?bus=20&loginType=20&clientType=1'
res = s.post(url, json={}, verify=False)
log.info(F'获取规则成功--》{res.json()}')
# 获取时间戳
data = time.time()
# 转换成localtime
time_local = time.localtime(data)
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
config.add_section(F'{dt}')
config.set(F'{dt}',"rule", F'{res.json()}')
config.write(open("rule_core.ini", "w"))
print(res.json())
return res.json()
# @timeout_decorator.timeout(3600) # 此方法为超过多少ms停止
def loop_func(func, second):
'''实现定时任务的脚本'''
# 每隔second秒执行func函数 sencond对应时间
while True:
if time.time() < 1642644003:
timer = Timer(60, func)
timer.start()
timer.join()
else:
log.info('流程结束')
break
try:
loop_func(get_rule, 1)
except Exception as e:
print('超时未获取到数据', e)
# 加raise 会把异常信息捕获到e 并且raise出来
raise Exception(F'{e}')