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

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 Socket:

daphne-u/tmp/daphne.sock django_project.asgi:application

在进程管理器里可以用文件描述符传递:

daphne--fd5django_project.asgi:application

需要更灵活的端口控制,可以用 Twisted endpoint 语法:

daphne-essl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application

全部参数可以用-h查看。

4、HTTP/2 支持

daphne 原生支持 HTTP/2 终止。需要安装 Twisted 的 http2 和 tls 扩展:

pipinstall-U"Twisted[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。

http://www.jsqmd.com/news/1127217/

相关文章:

  • Ceph云原生存储开发:openeuler/ceph_dev中CSI驱动实现原理
  • 容器故障排查利器:openEuler/cpds-agent实用技巧与最佳实践
  • AI建站工具避坑指南:高频问题与解决方案全解析
  • 2026,图片去背景工具全指南:免费在线、手机电脑软件及,PS,替代方案实操教学
  • Buck 降压电路电感全套计算实例总结(12V 转 5V/1MHz)
  • 老项目做 vibe coding 改造,别先开写:先把边界、契约和验收跑通
  • 深度强化学习入门:从PPO、DQN到A3C,算法原理与代码实战
  • 023-外语学习的刻意练习
  • openRSO 扩展开发指南:如何为框架添加新的资源管理模块
  • sbom-tools实战案例:在openEuler生态中的成功应用指南
  • 监控与告警:chaosArsenal-hardware故障注入结果的可观测性实践指南
  • Agent 自主工具创建:从工具发现到代码生成与自验证
  • awesome-rust:Rust 生态的完整索引
  • 【Software Engineering】Agile Development,Built for Change
  • Elasticsearch全解析:功能、上手、使用及开发指南
  • BSCCompiler调试技巧:使用GDB调试编译器内部机制的实战指南
  • 计算机Java毕设实战-农家乐民宿客房预订与餐饮消费管理系统的设计与实现 智慧乡村山庄休闲服务管理平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 中小企业轻量化一体化安全防护体系构建 —— 基于 Microsoft 365 Business Premium Defender 与 Purview 套件的落地研究
  • N_m3u8DL-RE:跨平台流媒体下载工具
  • Codex实战指南:从零掌握AI编程助手,提升开发效率
  • 傻瓜相机复兴,神牛 C100 透明屏相机仅售 199 元,能否脱颖而出?
  • 【2026最新】Dev C++ 6.5下载保姆级安装图文教程(全网最详细)【附安装包+C++编译器】
  • 【编程语言】深度梳理C/C++、Java、Python、Go、Rust的区别
  • 链接生成同款视频,2026年爆款视频复刻工作流,5款对比横评
  • Windows系统文件c_GSM7.DLL丢失找不到问题解决
  • Encore运行时嵌入Redis服务器:本地开发与生产环境行为一致的秘诀
  • 小龙虾技能-12-gog-ecosystem-02_GogPluginDev_插件开发
  • Ceph性能优化开发技巧:openeuler/ceph_dev中存储性能调优实战
  • 开发独立游戏的心态
  • 利用es2024新特性,图片压缩及上传