daphne:为 Django Channels 打造的 ASGI 协议服务器

📅 2026/7/5 8:52:07
daphne:为 Django Channels 打造的 ASGI 协议服务器
文章目录daphne为 Django Channels 打造的 ASGI 协议服务器1、这工具是干什么的2、为什么需要它3、怎么用4、HTTP/2 支持5、Python 版本要求6、适合谁用daphne为 Django Channels 打造的 ASGI 协议服务器daphne 在 GitHub 上已经拿到 2,669 Star。Django 团队开发了这套 HTTP、HTTP2 和 WebSocket 协议服务器专门给 Django Channels 提供底层支持。1、这工具是干什么的就一件事把 ASGI 应用跑起来。它能自动协商协议类型不需要给 WebSocket 端点加 URL 前缀也不用在代码里区分请求走哪个协议。一个服务同时处理 HTTP 请求和 WebSocket 连接。2、为什么需要它Django Channels 引入了 ASGI 规范让 Django 能够处理 WebSocket 等异步协议。但规范需要一个服务器来实现daphne 就是这个角色。在 daphne 出现之前Django 应用只能跑 WSGI处理不了长连接和实时通信。daphne 补上了这块让开发者可以用同一套框架同时处理 HTTP 请求和 WebSocket 连接。3、怎么用安装后直接指向 ASGI 应用daphne-b0.0.0.0-p8001django_project.asgi:application默认绑定 localhost:8000。如果跑在反向代理后面可以用 UNIX Socketdaphne-u/tmp/daphne.sock django_project.asgi:application在进程管理器里可以用文件描述符传递daphne--fd5django_project.asgi:application需要更灵活的端口控制可以用 Twisted endpoint 语法daphne-essl:443:privateKeykey.pem:certKeycrt.pem django_project.asgi:application全部参数可以用-h查看。4、HTTP/2 支持daphne 原生支持 HTTP/2 终止。需要安装 Twisted 的 http2 和 tls 扩展pipinstall-UTwisted[tls,http2]由于浏览器只支持基于 TLS 的 HTTP/2需要启用 SSL。系统要求 OpenSSL 1.0.2 以上。启动后可以在日志中看到 “HTTP/2 support enabled” 提示。HTTP/2 在浏览器开发者工具里看不出明显区别可以用浏览器扩展确认是否生效。目前只支持普通请求还没有 Server Push。但连接速度和开销已有明显改善。5、Python 版本要求daphne 需要 Python 3.9 或更高版本。6、适合谁用在用 Django Channels 做 WebSocket 或实时通信的开发者从 WSGI 迁移到 ASGI 的 Django 项目需要 HTTP/2 支持的 Python Web 服务daphne 是 Django Channels 生态的核心组件由 Django 团队维护。问题和特性建议可以提交 Issue。Web 服务daphne 是 Django Channels 生态的核心组件由 Django 团队维护。问题和特性建议可以提交 Issue。