Django 5+ 异步视图与实时能力:从 ASGI 到可控并发
Django 已支持异步视图与中间件,配合 Channels/Server-Sent Events 可实现实时功能。
一、异步视图
from django.http import JsonResponse
import asyncio
async def health(request):
await asyncio.sleep(0.01)
return JsonResponse({"ok": True})
异步视图只在 I/O 等待上获利;CPU 密集仍交给任务队列。
二、实时推送选型
SSE:单向推送,简单轻量。
WebSocket(Channels):双向通信,适合协作编辑/聊天室。
三、与 Celery 的职责边界
Web 层只做快速响应与消息分发;耗时任务(导出、视频处理)下沉 Celery。
通过 Redis/RabbitMQ 作为 Broker;幂等和重试是关键。
四、并发控制
对外部 API 调用加超时与熔断;并发阈值放在配置。
限制“单用户/单资源”的并发提交,防止击穿。
线上落地时的观测指标(事件循环阻塞、任务排队长度)我也会标准化记录,这些经验在 gplpal 的项目里多次复用。
评论 0