Django ASGI (HTTP/WebSocket) 服务器
项目描述
Daphne 是用于 ASGI和 ASGI-HTTP的 HTTP、HTTP2 和 WebSocket 协议服务器,旨在为 Django 通道提供支持。
支持协议自动协商;不需要 URL 前缀来确定 WebSocket 端点与 HTTP 端点。
跑步
只需将 Daphne 指向您的 ASGI 应用程序,并可选择设置绑定地址和端口(默认为 localhost,端口 8000):
daphne -b 0.0.0.0 -p 8001 django_project.asgi:application
如果您打算在代理服务器后面运行 daphne,您可以使用 UNIX 套接字在两者之间进行通信:
daphne -u /tmp/daphne.sock django_project.asgi:application
如果 daphne 在进程管理器中运行,您可能希望它绑定到从父进程传递下来的文件描述符。为此,您可以使用 –fd 标志:
daphne --fd 5 django_project.asgi:application
如果您想对端口/套接字绑定进行更多控制,您可以 通过使用–endpoint (-e)标志回退到使用twisted 的端点描述字符串,该标志可以多次使用。此行将在端口 443 上启动 SSL 服务器,假设key.pem和crt.pem 存在于当前目录中(需要安装 pyopenssl):
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
端点甚至允许您使用txacme端点语法从 Let's Encrypt 获取自动证书,您可以在http://txacme.readthedocs.io/en/stable/阅读更多信息。
要查看所有可用的命令行选项,请使用-h标志运行 daphne。
HTTP/2 支持
Daphne 原生支持终止 HTTP/2 连接。不过,您需要做几件事才能使其正常工作。首先,您需要确保安装了 Twisted http2和tls附加组件:
pip install -U 'Twisted[tls,http2]'
接下来,由于当前所有浏览器在使用 TLS 时仅支持 HTTP/2,因此您需要在启用 TLS 的情况下启动 Daphne,这可以使用 Twisted 端点语法来完成:
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
或者,您可以使用txacme端点语法或任何其他在后台启用 TLS 的方法。
您还需要使用具有OpenSSL 1.0.2 或更高版本的系统;如果您使用的是 Ubuntu,这意味着您至少需要 Ubuntu 16.04。
现在,当你启动 Daphne 时,它应该在日志中告诉你:
2017-03-18 19:14:02,741 INFO Starting server at ssl:port=8000:privateKey=privkey.pem:certKey=cert.pem, channel layer django_project.asgi:channel_layer. 2017-03-18 19:14:02,742 INFO HTTP/2 support enabled
然后,使用支持 HTTP/2 的浏览器连接,一切都应该正常工作。通常很难判断 HTTP/2 是否正常工作,因为 Daphne 给您的日志将是相同的(毕竟是 HTTP),并且大多数浏览器不会在其网络检查器窗口中显示它。有一些浏览器扩展可以让您清楚地知道它是否正常工作。
Daphne 目前仅支持 HTTP/2 上的“正常”请求;尚不支持服务器推送等扩展功能。但是,它将导致更快的连接和更低的开销。
如果您的站点前面有一个反向代理来提供静态文件或类似文件,那么 HTTP/2 仅在该代理理解并正确通过连接的情况下才能工作。
根路径 (SCRIPT_NAME)
为了设置 Daphne 的根路径,相当于 WSGI SCRIPT_NAME设置,您有两个选项:
传递标头值Daphne-Root-Path,并将所需的根路径作为 URL 编码的 ASCII 值。此标头不会传递给应用程序。
将--root-path命令行选项与所需的根路径设置为 URL 编码的 ASCII 值。
如果两者都设置,则标头优先。与SCRIPT_ALIAS 一样,该值应以斜杠开头,但不能以 1 结尾;例如:
daphne --root-path=/forum django_project.asgi:application
Python 支持
Daphne 需要 Python 3.6 或更高版本。
贡献
请参阅 主要频道贡献文档。
要运行测试,请确保您已使用软件包额外安装了测试:
cd daphne/ pip install -e '.[tests]' pytest
维护和安全
要报告安全问题,请联系security @ djangoproject 。com。有关 GPG 签名和更多安全过程信息,请参阅 https://docs.djangoproject.com/en/dev/internals/security/。
要报告错误或请求新功能,请打开一个新的 GitHub 问题。
此存储库是 Channels 项目的一部分。对于牧羊人和维护团队,请参阅 主要频道自述文件。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
adam_daphne -3.0.15-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 424589c4b60a29224af419a9252678572fe59fde4fcb8a7a2e8b252f1986e1b9 |
|
MD5 | 66e452728322b7731ca43c24d282e8f8 |
|
布莱克2-256 | 585787b26ff554ee8c1b07e9b7298a99ee306371069dd1a8d8f888a1a6a054d8 |