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