import asyncio import json from fastapi import APIRouter, Request from common import * from models import DataModel router = APIRouter() @router.post("/point/") async def point(request: Request, items: DataModel): # 还原字段名 和 组装数据 data_list = [] public_data = restore_field(items.public) rdb = request.app.state.redis data_factory = request.app.state.data_factory output_factory = request.app.state.output_factory for item in items.data: data = restore_field(item) sign = data.pop('sign') # 验签 if not check_sign(sign, public_data, data): return {"code": -1, 'msg': '签名错误'} data.update(public_data) data_list.append(data) for item in data_list: await asyncio.gather(*map(lambda o: asyncio.create_task(o(request, rdb, item)), data_factory.handler_link)) msg = data_factory.format_data(item) output_factory.send(msg) return {"code": 0, 'msg': 'ok'}