1.增加任务中间件

This commit is contained in:
李伟 2022-10-20 17:43:50 +08:00
parent 6f1da0cbb2
commit 90f256bcb6

32
main.py
View File

@ -118,8 +118,36 @@ def login_expired(conn: HTTPConnection, exc: Exception) -> Response:
# return Response(schemas.Msg(code=0, msg='没有操作权限',data='').json())
#
# return response
@app.middleware("http")#如反馈任务未启动,则启动任务
async def run_task(request: Request, call_next):
"""
重启反馈提醒任务
"""
start_time = int(time.time() * 1000)
response = await call_next(request)
process_time = int(time.time() * 1000) - start_time
response.headers["X-Process-Time"] = str(process_time)
with open('task.json', 'r', encoding='utf-8') as f:
ff = f.read()
if ff == '':
return response
else:
data = json.loads(ff)
res = scheduler.queue
uid = [i.kwargs['uid'] for i in res] # 取所有的任务uid
for k, v in data.items():
if k not in uid: # 在现有任务里面不在json文件里面则启动json文件里面的一个任务
now = str(time.time()).split('.')[0]
end_time = v['times'] - int(now)
# 没有过时的才会重启任务
if end_time > 0:
scheduler.enter(end_time, 1, task, kwargs=v)
else:
data.pop(k)
jsontext = json.dumps(data)
write_task(jsontext)
t = threading.Thread(target=scheduler.run)
t.start()
app.add_middleware(AuthenticationMiddleware, backend=BasicAuth(), on_error=login_expired)
app.add_middleware(