Django ASGI (HTTP/WebSocket)服务器
项目描述
大鹏是一个为ASGI和ASGI-HTTP(用于Django Channels)开发的HTTP、HTTP2和WebSocket协议服务器。
它支持自动协商协议;无需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
如果您想对端口/套接字绑定有更多的控制,可以使用 Twisted的端点描述字符串,通过使用 –endpoint (-e) 标志,它可以多次使用。这行代码将在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的浏览器连接,一切应该都能正常工作。由于Daphne提供的日志将与HTTP相同,因此很难判断HTTP/2是否正在工作,并且大多数浏览器的网络检查器窗口中都不会明确显示。有一些浏览器扩展可以清楚地告诉您是否正在工作。
目前,Daphne仅支持通过HTTP/2的“常规”请求;尚不支持扩展功能,如服务器推送。但它将导致连接速度更快,开销更低。
如果您在网站前面有反向代理来提供静态文件或类似内容,则只有当该代理正确理解和传递连接时,HTTP/2才能正常工作。
根路径(SCRIPT_NAME)
为了设置Daphne的根路径,这是WSGI SCRIPT_NAME 设置的等效项,您有两个选项
传递一个包含所需根路径的URL编码ASCII值的头信息 Daphne-Root-Path。此头信息不会传递给应用程序。
使用包含所需根路径的URL编码ASCII值的 --root-path 命令行选项。
如果两者都设置了,则头信息具有优先权。与 SCRIPT_ALIAS 一样,值应以斜杠开头,但不应以斜杠结尾;例如
daphne --root-path=/forum django_project.asgi:application
Python 支持
Daphne需要Python 3.8或更高版本。
贡献
请参阅主要Channels贡献文档。
要运行测试,请确保您已使用与包一起安装的 tests 扩展。
cd daphne/ pip install -e '.[tests]' pytest
维护和安全
要报告安全问题,请联系 security@djangoproject.com。有关GPG签名和更多安全流程信息,请参阅 https://docs.django.ac.cn/en/dev/internals/security/。
要报告错误或请求新功能,请打开一个新的GitHub问题。
此存储库是Channels项目的一部分。对于守护者和维护团队,请参阅 主Channels自述文件。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
daphne-4.1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fcbcace38eb86624ae247c7ffdc8ac12f155d7d19eafac4247381896d6f33761 |
|
MD5 | 6a00ce30210105fcd0f756d4dc5505f9 |
|
BLAKE2b-256 | 1ac1aedf180beb12395835cba791ce7239b8880009d9d37564d72b7590cde605 |
daphne-4.1.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 618d1322bb4d875342b99dd2a10da2d9aae7ee3645f765965fdc1e658ea5290a |
|
MD5 | c5893da0eaae72d4fda07597e5ae82ac |
|
BLAKE2b-256 | abd6466f9219281472ecc269ab1d351c5b22a3cfca2d52f72881917949e414df |