当前位置: 首页 > news >正文

Python开发:接口场景设计

我的开发场景是:前端选中某个文件后,点击提交,后端开始下载并解析文件,生成apks文件。
涉及到两个接口,分别是getS3List和submitS3Path,已经调通了,后端可以成功收到前端的请求并进行下载和解析。
遇到的的问题是:后端解析需要时间,前端在等待过程中提示:请求超时、请求失败,请稍后重试,后端解析需要一分钟左右。

我的解决方案是:后端异步任务 + 轮询进度接口,让前端立即得到“任务已开始”的响应,然后再异步处理解析任务。
(1)后端接口返回任务 ID:

@router.post("/app/aabParse")
async def parse_aab_api(url: str = Form(...)):logger.info(f'[parse_aab_api] url: {url}')task_id = str(uuid.uuid4())task = asyncio.create_task(process_aab_task(task_id, url))async with tasks_lock:tasks[task_id] = {"status": "processing", "result": None, "task": task}return JSONResponse(content={"code": 0,"message": "success","data": {"task_id": task_id,"task_message": "任务已开始,请稍后查询结果"}})
@router.get("/app/aabParse/status/{task_id}")
async def get_task_status(task_id: str):async with tasks_lock:task = tasks.get(task_id)if not task:raise HTTPException(status_code=404, detail="Task not found")status = task["status"]result = task["result"]return JSONResponse(content={"code": 0,"message": "success","data": {"status": status,"result": result}})

(2)前端立即返回成功,然后轮询状态;

优点:
(1)不会超时;
(2)用户体验更好;
(3)可展示“解析中…”动画;

http://www.dtcms.com/a/511674.html

相关文章:

  • 汽车网站flash模板定制高端网站建设
  • 【Ubuntu18.04 D435i RGB相机与IMU标定详细版(三)】
  • 单肩包自定义页面设计模板seo关键词优化软件app
  • 朊病毒检测市场:技术突破与公共卫生需求驱动下的全球增长
  • 思维清晰的基石:概念和命题解析
  • ubuntu中替换python版本
  • mybatis请求重试工具
  • 高速运放输入引脚并联电阻太小会怎样?
  • vue前端面试题——记录一次面试当中遇到的题(10)
  • 有没有做高仿手表的网站php网站地图
  • wordpress提交百度站长中建装饰集团有限公司官网
  • 牛客网 AI题​(一)机器学习 + 深度学习
  • 第一例:石头剪刀布的机器学习(xedu,示例15)
  • 【AI论文】D2E:基于桌面数据扩展视觉-动作预训练规模,以迁移至具身人工智能领域
  • 机器学习和深度学习模型训练流程
  • C++ STL——allocator
  • 开题报告--中美外贸企业电子商务模式的比较分析
  • 基于原子操作的 C++ 高并发跳表实现
  • java 8 lambda表达式对list进行分组
  • 网站建设 有聊天工具的吗网站开发者的设计构想
  • 建网站 北京网站接入支付宝在线交易怎么做
  • scrapy爬取豆瓣电影
  • bisheng 的 MCP服务器添加 或 系统集成
  • 一个完整的 TCP 服务器监听示例(C#)
  • 执行操作后元素的最高频率1 2(LeetCode 3346 3347)
  • Java 大视界 -- Java 大数据在智慧交通停车场智能管理与车位预测中的应用实践
  • 版本设计网站100个关键词
  • 网站前置审批工程建设服务平台
  • 共聚焦显微镜(LSCM)的针孔效应
  • STM32CubeMX