相关文章推荐
大鼻子的双杠  ·  Linux编译安装Python3.9——以C ...·  3 月前    · 
近视的口罩  ·  python中怎样删除字符串头尾的空格和换行 ...·  3 月前    · 
从容的碗  ·  txt文件如何设置每行为空行?_编程语言-C ...·  3 月前    · 
欢快的香烟  ·  将Mathematica生成的不规则形状数组 ...·  2 月前    · 
愤怒的风衣  ·  Python 异步 ASGI ...·  1 月前    · 
爱玩的登山鞋  ·  从零开始设计一个Web端多人协同编辑器 - 知乎·  2 年前    · 
帅气的投影仪  ·  WPF上位机自定义控件系列:触摸屏数字输入键 ...·  3 年前    · 
发呆的花生  ·  WPF ...·  3 年前    · 
旅行中的铁链  ·  nginx支持一个端口访问多个前端项目(ht ...·  3 年前    · 
大气的苹果  ·  HILT : ...·  3 年前    · 
Code  ›  Python 异步 ASGI 服务器及框架开发者社区
框架 python 编程语言
https://cloud.tencent.com/developer/article/1601400
愤怒的风衣
1 月前
Python编程与实战

Python 异步 ASGI 服务器及框架

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
Python编程与实战
社区首页 > 专栏 > Python 异步 ASGI 服务器及框架

Python 异步 ASGI 服务器及框架

作者头像
Python编程与实战
发布 于 2020-03-19 16:35:35
发布 于 2020-03-19 16:35:35
3.7K 0
举报
文章被收录于专栏: Python编程与实战 Python编程与实战

ASGI

在 Python3.5 之后增加 async/await 特性之后,异步编程变得异常火爆,越来越多开发者投入异步的怀抱。

直到最近,Python 仍缺乏用于 asyncio 框架的最低限度的低级服务器/应用程序接口。

而 ASGI 协议规范的出现填补了这一空白,这意味着我们现在能够开始构建可在所有异步框架中使用的通用工具集

ASGI(异步服务器网关接口)是WSGI的精神继承者,旨在在具有异步功能的Python Web服务器,框架和应用程序之间提供标准接口。 ”

有关同步生态中的服务器及 WSGI 请查看文末推荐的以前写的相关文章

ASGI 服务器

Uvicorn

Uvicorn 是一个快速的 ASGI 服务器,Uvicorn 是基于 uvloop 和 httptools 构建的,是 Python 异步生态中重要的一员。

Uvicorn 当前支持 HTTP / 1.1 和 WebSockets,将来计划支持HTTP / 2。

版本要求 Python 3.5 以上,Uvicorn 的安装,

代码语言: javascript
复制
pip install uvicorn

我们可以自己编写一个异步的服务,同时使用 uvicorn 来运行,比如新建一个 demo.py,里面代码如下:

代码语言: javascript
复制
async def app(scope, receive, send):
    assert scope['type'] == 'http'
    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [
            [b'content-type', b'text/plain'],
    await send({
        'type': 'http.response.body',
        'body': b'Hello, world!',

运行命令如下,

代码语言: javascript
复制
uvicorn demo:app

服务启动之后,我们通过浏览器就能方位该服务,默认端口 8000

Daphne

Daphne 服务器是最早为 Django Channels 提供支持的 ASGI 服务器

Daphne 它在生产中广泛运行,并支持HTTP / 1.1,HTTP / 2和 WebSockets。

安装和运行的命令如下:

代码语言: javascript
复制
pip install daphne
daphne app:App

和 uvicorn 命令类似,app 是文件名称,APP 是应用程序

Hypercorn

Hypercorn 最初是框架 Quart 的一部分,然后被分离为独立的 ASGI 服务器

同样的,Hypercorn 支持 HTTP/1.1, HTTP/2, 以及 WebSockets.

安装和运行的命令如下:

代码语言: javascript
复制
pip install hypercorn
hypercorn app:App

说了 ASGI 服务器,接下来就是支持 ASGI 的框架了

ASGI 框架

您可以使用 Uvicorn,Daphne 或 Hypercorn 运行任何 ASGI 框架

对于小型服务,您也可以直接编写 ASGI 应用程序。例如之前编写的异步框架。

Python 中有以下几个支持 ASGI 的异步框架

Starlette

Starlette 是一个轻量级的 ASGI 框架/工具包。它是构建高性能异步服务的理想选择,并且支持 HTTP 和 WebSockets。

Django Channels

ASGI 规范最初是设计就是用于 Django Channels 的。

Channels 与其他ASGI框架略有不同,它在线程框架后端上提供了异步前端。

同时 Django Channels 支持 WebSocket,后台任务和长期运行的连接,而应用程序代码仍在标准线程上下文中运行

Quart

Quart 是一个类似于 Flask 的 ASGI Web 框架。Quart 不仅与 Flask 相似,而且与 Flask API 兼容!

该框架的作者希望保留了Flask 的风格,只是向其中添加异步、WebSocket 和 HTTP 2支持。

因此,你可以从 Flask 文档中学习 Quart 的用法,只需要记住 Quart 中的函数是异步的就行。

一个简单的 Quart 服务:

代码语言: javascript
复制
from quart import Quart
 
推荐文章
大鼻子的双杠  ·  Linux编译安装Python3.9——以CentOS7为例开发者社区
3 月前
近视的口罩  ·  python中怎样删除字符串头尾的空格和换行-百度经验
3 月前
从容的碗  ·  txt文件如何设置每行为空行?_编程语言-CSDN问答
3 月前
欢快的香烟  ·  将Mathematica生成的不规则形状数组导入Python的技术问询
2 月前
愤怒的风衣  ·  Python 异步 ASGI 服务器及框架开发者社区
1 月前
爱玩的登山鞋  ·  从零开始设计一个Web端多人协同编辑器 - 知乎
2 年前
帅气的投影仪  ·  WPF上位机自定义控件系列:触摸屏数字输入键盘 WxNumericalKeyboard - 知乎
3 年前
发呆的花生  ·  WPF 控件_echohye的技术博客_51CTO博客
3 年前
旅行中的铁链  ·  nginx支持一个端口访问多个前端项目(http以及https)-阿里云开发者社区
3 年前
大气的苹果  ·  HILT : 在ViewModel中,lateinit属性库没有被初始化
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号