百万行同步导出必然超时,改异步两段式。
接口只建任务,立刻返回 task_id 就收工。
队列里分批写文件,落到对象存储。
前端轮询状态,成功后拿带签名的下载链接。
任务表记状态和进度,失败要能重试。
导出不占请求线程,超时问题自然消失。
POST /api/export -> 202 {"task_id":"e8f1","status":"pending"}
GET /api/export/e8f1 -> {"status":"running","progress":42}
GET /api/export/e8f1 -> {"status":"done","url":"https://.../report.xlsx?sig=..."}
-- worker 里游标分页取数,避免一次查全表
SELECT id, amount, created_at FROM orders
WHERE id > :last_id ORDER BY id LIMIT 5000;
THE END






暂无评论内容