与asgi兼容的http/2web服务器
thruster的Python项目详细描述
推进器
刚刚工作的http/2服务器
这是我试图用python编写一个功能齐全的htp2.0服务器。这是一项正在进行的工作。 服务器支持asgi 1.0规范。不依赖于hyper/h2(除了hpack)和twisted包。 http/2堆栈完全是从头开始实现的。 依赖于bitstring来处理用于http/2协议实现的二进制数据。
http/2(当前状态)
- 大多数http/2帧的实现已经完成。其余框架的实现将在用例出现时完成。
- 所有帧都按类组织,以帧类为父级。
- 支持ASGi 1.0。即将添加对2.0的支持。
- 流量控制(待添加)
- 流优先级(待添加)
- 与Django合作(根据Django 1.11和2.2进行测试)
用法
使用pip安装软件包
- PIP3安装推进器
运行以下命令:
- 推进器—应用程序路径到您的应用程序—证书文件路径到证书文件—密钥文件路径到密钥文件
- 例如:推进器——app mysite——cert file server_cert.crt——密钥文件服务器_key.key
--证书文件应为.crt文件,-密钥文件应为.key文件。如果没有传递--cert file和--key file选项,推进器将在当前目录中查找server.crt和server.key。 --证书文件和--key文件是ssl连接所必需的,http2只适用于ssl。您可以使用--help了解更多选项。 如果一切顺利,你应该在终端上看到以下输出。
在端口8000上提供HTTP…
asgi应用程序的结构应该是这样的。例如:如果你用的是django。
根目录/ Asgi.py公司 路由.py settings.py
asgi.py
importosimportdjangofromchannels.routingimportget_default_applicationos.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite.settings")django.setup()application=get_default_application()
routing.py
fromchannels.routingimportProtocolTypeRouterapplication=ProtocolTypeRouter({})
settings.py
ASGI_APPLICATION='mysite.routing.application'