跳转到主要内容

Django ASGI (HTTP/WebSocket)服务器

项目描述

https://img.shields.io/pypi/v/daphne.svg

大鹏是一个为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.pemcrt.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的 http2tls 扩展。

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 (37.9 kB 查看哈希值)

上传时间

构建分发

daphne-4.1.2-py3-none-any.whl (30.9 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面