Project Icon

awesome-asgi

ASGI生态系统全面资源指南

本资源清单汇集了ASGI生态系统中的核心组件,包括服务器、框架、应用和库等。内容涵盖应用开发、身份验证、监控、代理、实时通信、安全、序列化和无服务器等多个领域。此外还收录了ASGI相关的参考文档、演讲、实验项目和教程等资料。该清单旨在为开发者提供ASGI技术栈的全面概览,助力跟踪优质项目,推动异步Python Web开发的进步。

awesome-asgi

Awesome 版本控制 构建状态

精选的优秀ASGI服务器、框架、应用、库和其他资源列表。

这个列表将帮助您及时了解最优秀的ASGI项目和资源。您可以关注此仓库的发布,以获得新条目的通知。如果您发现有任何遗漏,请贡献。❣️

ASGI是WSGI的精神继承者,是一个标准接口。它实现了整个Python异步Web技术栈的通信和互操作性:服务器、应用程序、中间件和各个组件。

ASGI诞生于2016年,最初是为Django Channels项目提供支持。此后,ASGI及其生态系统一直在不断扩展,尤其是在2018年Starlette和Uvicorn等项目的出现后得到了进一步的推动。

目录

应用框架

用于构建ASGI Web应用程序的框架。

  • Asgineer - 一个非常轻量级的ASGI Web框架,支持长轮询、SSE和WebSocket。
  • BlackSheep - BlackSheep是一个异步Web框架,用于使用Python构建基于事件的Web应用程序。它的灵感来自Flask、ASP.NET Core和Yury Selivanov的工作。
  • Channels - Django的异步支持,也是ASGI项目最初的推动力。支持HTTP和WebSocket与Django集成,以及使用ASGI原生代码支持任何协议。
  • Django - 追求完美主义者的Web框架。自3.0版本起原生支持ASGI。
  • Falcon - 专注于可靠性、正确性和大规模性能的Python极简REST和应用后端框架。自3.0版本起原生支持ASGI。
  • FastAPI - 一个现代、高性能的Web框架,用于基于Python 3.6+标准类型提示构建API。由Starlette和Pydantic提供支持。支持HTTP和WebSocket。
  • Guillotina - 全功能ASGI兼容REST应用框架,专为高性能和水平扩展解决方案而设计。
  • Litestar - 一个高性能的ASGI框架,提供基于msgspec的消息解析、依赖注入、身份验证、OpenAPI文档等功能。支持HTTP和WebSocket。支持asyncio和trio。
  • Pyotr - 一个服务器框架,也是一个客户端库,用于提供和消费基于OpenAPI的Web服务。基于Starlette和HTTPX
  • Quart - 一个Python ASGI Web微框架,其API是Flask API的超集。支持HTTP(包括SSE和HTTP/2服务器推送)和WebSocket。
  • Responder - 一个由Starlette驱动的Python熟悉的HTTP服务框架。
  • Sanic - Sanic是一个为速度而生的Python 3.6+ Web服务器和Web框架。它允许使用Python 3.5中添加的async/await语法,使您的代码非阻塞且高速。支持HTTP和WebSocket。
  • Starlette - 闪耀的小型ASGI框架。Starlette也是一个ASGI工具包 -- 其模块化设计和可重用组件使其成为ASGI生态系统的基础。支持HTTP和WebSocket。支持asyncio和trio。
  • Tonberry - Tonberry是一个采用基于类的路由方法的ASGI框架。受CherryPy影响,但与asyncio和WebSocket兼容。

身份认证

用于在ASGI Web应用程序中添加身份认证和管理用户的包。

  • asgi-auth-github - ASGI应用的GitHub OAuth身份认证。支持限制特定用户或特定团队或组织的成员。
  • SessionAuth - 使用会话和cookie进行身份认证。(随Piccolo API一起提供,需要Piccolo ORM。)
  • TokenAuth - 使用请求头中的令牌进行身份认证。(随Piccolo API一起提供,需要Piccolo ORM。)

终端用户应用

运行在ASGI上的真实世界应用。

  • ASGIWebDAV - 一个异步WebDAV服务器实现。支持多提供商、多账户和权限控制。
  • Datasette - 一个用于探索和发布数据的工具,包括ASGI兼容组件和插件。

GraphQL

用于通过ASGI构建GraphQL API的包。

  • Ariadne - 一个以模式优先的Python库,用于实现GraphQL服务器。
  • Strawberry - 一个受数据类启发的、以代码优先的Python库,用于实现GraphQL服务器。
  • tartiflette-asgi - 为Tartiflette GraphQL引擎提供ASGI支持。

监控

用于监控ASGI Web应用程序的包。

  • asgi-correlation-id - 请求/相关ID日志中间件
  • New Relic ASGI - 为ASGI应用程序提供的New Relic集成。(随newrelic一起提供。)
  • opentelemetry-python - ASGI中间件和辅助工具,用于通过(目前处于alpha阶段的)OpenTelemetry标准收集应用程序指标。支持HTTP和WebSocket。
  • Scout APM Starlette - Scout APM与Starlette及基于Starlette的框架的集成。(随scout-apm一起提供。)
  • Sentry ASGI - 为ASGI框架提供的Sentry集成。(随sentry-sdk一起提供。)
  • timing-asgi - ASGI中间件,用于记录和发布计时指标。

代理

在代理后运行ASGI Web应用程序时使用的包,或通过ASGI应用程序代理其他服务器的包。

  • asgi-proxy-lib - 一个ASGI函数,用于通过HTTP代理到后端。
  • asgiproxy - 用于构建ASGI的HTTP和Websocket代理的工具。
  • ProxyHeadersMiddleware - 使用已知和受信任的代理设置的X-Forwarded-ProtoX-Forwarded-For头,使clientscheme引用连接的客户端(随Uvicorn一起提供)。

实时Web

构建具有实时功能的ASGI Web应用程序时使用的包。

  • python-socketio - 使用Socket.IO的WebSocket客户端和服务器。包括ASGI应用程序包装器。

资源

关于ASGI本身的内容:概念、历史、用法等。

出版物

关于ASGI的文章、博客文章和其他出版物。

参考

ASGI的参考文档和实现。

  • ASGI文档 - ASGI规范的文档网站。
  • asgiref - ASGI参考实现,包括函数包装器、服务器基类、类型提示和WSGI到ASGI的适配器。

演讲

关于ASGI的演讲。

实验和示例

实验ASGI或提供"无意维护"代码的软件。

  • asgi-background - 适用于任何ASGI框架的后台任务。
  • asgi-lifespan-middleware - ASGI中间件,使用简单的异步上下文管理器接口支持ASGI生命周期。
  • asgi-routing - 为ASGI生态系统编写的高性能路由器,基于routriepath-tree构建。
  • nanoasgi - 一个微小的零依赖ASGI Web框架。
  • proxyx - 使用ASGI和HTTPX构建的轻量级HTTP/1.1代理服务的概念验证。
  • py-frameworks-bench - (主要是ASGI)Python异步框架的基准测试。

教程

关于使用ASGI应用程序和组件的教程。

安全

用于管理ASGI Web应用程序安全性的包和组件。

  • asgi-csrf - 用于防御CSRF攻击的ASGI中间件。
  • asgi-ratelimit - 一个可自定义的ASGI限速中间件,支持正则表达式路径匹配。
  • CORSMiddleware - 允许浏览器发起跨源请求。(随Starlette一起提供。)
  • CSPMiddleware - 告知浏览器只运行来自同源的Javascript。(随Piccolo API一起提供。)
  • CSRFMiddleware - 在使用cookie进行身份验证时防御CSRF攻击。(随Piccolo API一起提供。)
  • HTTPSRedirectMiddleware - 将HTTP/WS流量重定向到HTTPS/WSS。(随Starlette一起提供。)
  • RateLimitingMiddleware - 保护敏感端点免受暴力攻击。(随Piccolo API一起提供。)
  • TrustedHostMiddleware - 通过验证请求的Host头来防御主机头攻击。(随Starlette一起提供。)

序列化

用于转换ASGI Web应用程序中数据格式的包和组件。

  • brotli-asgi - 使用Brotli进行响应内容压缩。
  • GZipMiddleware - 使用GZip进行响应内容压缩。(随Starlette一起提供。)
  • msgpack-asgi - 为ASGI应用和框架提供即插即用的MessagePack支持。

无服务器

用于构建基于ASGI的无服务器Web应用程序的包。

  • Mangum - 为ASGI提供AWS Lambda和API Gateway支持。

服务器

用于ASGI应用程序的Web服务器。

  • Daphne - 为ASGI开发的HTTP、HTTP2和WebSocket协议服务器,用于支持Django Channels。
  • Hypercorn - 基于sans-io hyper、h11、h2和wsproto库的ASGI服务器。支持HTTP/1、HTTP/2、WebSockets、ASGI 2.0和ASGI 3.0。兼容asyncio、uvloop和trio工作类型。
  • NGINX Unit - 支持ASGI的通用Web应用服务器。
  • Uvicorn - 基于uvloop和httptools的快速ASGI服务器。支持HTTP/1和WebSockets。

测试

用于测试ASGI应用程序的包。

  • asgi-lifespan - ASGI应用程序的编程启动/关闭。允许在不启动服务器的情况下测试ASGI应用程序。
  • async-asgi-testclient - 一个与框架无关的库,用于测试ASGI Web应用程序。
  • HTTPX - 下一代HTTP客户端,包括异步支持和直接调用ASGI应用程序的能力。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号