首页 > 其他分享 >wsgi和asgi

wsgi和asgi

时间:2024-11-21 09:43:07浏览次数:1  
标签:Web wsgi WebSocket 异步 asgi WSGI 应用程序 ASGI

WSGI(Web Server Gateway Interface)和ASGI(Asynchronous Server Gateway Interface)是用于Python Web应用程序的两种接口标准,它们的主要区别在于是否支持异步编程。

1. WSGI:同步标准

特点:

  • 全称:Web Server Gateway Interface

  • 同步模式:基于阻塞式的请求处理方式,每个请求在处理完成前会占用一个线程或进程。

  • 适用场景:适合传统的Web应用程序,比如以Django和Flask为代表的框架。

  • 限制:

    • 无法处理WebSocket。

    • 对于高并发和异步需求的场景支持较差。

工作流程:

  • 客户端发送HTTP请求到Web服务器(如Gunicorn)。

  • Web服务器通过WSGI调用Python应用程序。

  • 应用程序处理请求并返回响应。

2. ASGI:异步标准

特点:

  • 全称:Asynchronous Server Gateway Interface

  • 异步模式:支持异步非阻塞编程,可同时处理多个任务(如HTTP和WebSocket)。

  • 适用场景:适合实时性要求高的应用,如WebSocket、长连接、和实时数据传输。

  • 优势:

  • 支持多协议(HTTP、WebSocket、gRPC等)。

  • 对高并发和异步任务的支持更好。

  • 使用框架:如FastAPI、Django(支持ASGI的版本)。

工作流程:

  • 客户端发送HTTP或WebSocket请求到ASGI服务器(如Uvicorn或Daphne)。

  • ASGI服务器根据协议和路由调用相应的应用程序。

  • 应用程序通过异步方式处理任务并返回响应。

什么时候用ASGI或WSGI?

  • 使用WSGI:如果你的应用是传统的Web应用(如表单提交、页面渲染等),并且不需要实时通讯或异步处理。

  • 使用ASGI:如果你的应用需要WebSocket支持、实时数据更新、或需要优化高并发性能。

两者可以共存,比如Django在3.0之后同时支持WSGI和ASGI,你可以根据具体需求选择使用哪种模式

标签:Web,wsgi,WebSocket,异步,asgi,WSGI,应用程序,ASGI
From: https://www.cnblogs.com/hisun9/p/18559942

相关文章

  • # 优化底层启动方式 UWSGI 和 gunicorn 比对
    UWSGI和Gunicorn比对摘要:本文档旨在对PythonWeb项目优化底层启动方式进行比较,特别是UWSGI和Gunicorn。UWSGI(UniversalWebServerGatewayInterface)是一种PythonWeb服务器网关接口,它可以与各种Web服务器结合使用,提供高效的Web应用程序部署解决方案。Gunicorn(Gre......
  • 三周精通FastAPI:37 包含 WSGI - Flask,Django,Pyramid 以及其它
    官方文档:https://fastapi.tiangolo.com/zh/advanced/wsgi/包含WSGI-Flask,Django,其它¶您可以挂载多个WSGI应用,正如您在 SubApplications-Mounts, BehindaProxy 中所看到的那样。为此,您可以使用 WSGIMiddleware 来包装你的WSGI应用,如:Flask,Django,等等。使......
  • pip install uwsgi==2.0.23
     pipinstalluwsgi==2.0.23Lookinginindexes:http://mirrors.tencentyun.com/pypi/simpleCollectinguwsgi==2.0.23 Downloadinghttp://mirrors.tencentyun.com/pypi/packages/79/73/b5def500729e134d1cb8dfc334e27fa2e9cfd4e639c1f60c6532d40edaed/uwsgi-2.0.23.tar.g......
  • Django使用uwsgi和nginx进行手动部署
    在Django项目中使用uWSGI和Nginx进行部署是一种常见的生产环境配置。以下是一个详细的步骤指南,帮助你完成这个过程。前提条件有一个已经开发好的Django项目。服务器已安装Python、pip、Nginx和uWSGI。有一个有效的域名(可选,但推荐)。步骤一:准备Django项目收集静态文件:在项......
  • Python升级后找不到uwsgi模块
    我的家庭服务器上运行着Flask/UWSGI应用程序。最近的Ubuntu升级删除了Python3.10并安装了Python3.12。我已经创建了一个新的venv并安装了该应用程序,但它不再运行。在UWSGI日志中,它显示:ModuleNotFoundError:Nomodulenamed'wsgi'我的应用程序称为sieve,工作......
  • faststream 自己的asgi 实现
    faststream目前自己包含了一个asgi的实现,可以快速实现api能力,同时也可以与其他web框架集成,以下是一个简单试用参考代码demo.pyfromfaststream.redisimportRedisBrokerfromfaststream.asgiimportAsgiFastStream,get,AsgiResponsefromtypingimportAnyfrompyda......
  • 全网最简单ubuntu18.04+mysql5.7+nginx+uwsgi一次性部署Django!!!!!
    ubuntu18.04,自带python3.6,mysql5.7 Nginx*******************************1.安装nginx apt-getupdate apt-getupgrade apt-getinstallnginx 2.修改端口为81(可选),是一个链接 /etc/nginx/sites-enabled/default3.servicenginxreload4.servicenginx......
  • faststream 自己的asgi 实现
    faststream目前自己包含了一个asgi的实现,可以快速实现api能力,同时也可以与其他web框架集成,以下是一个简单试用参考代码demo.pyfromfaststream.redisimportRedisBroker fromfaststream.asgiimportAsgiFastStream,get,AsgiResponse fromtypingi......
  • uwsgi --ini uwsgi.ini
      (venv)[root@VM-8-12-centosbackend]#uwsgi--iniuwsig_scripts/uwsgi.ini[uWSGI]gettingINIconfigurationfromuwsig_scripts/uwsgi.ini***WARNING:Can'tfindsection"uwsgi"inINIconfigurationfileuwsig_scripts/uwsgi.ini***uwsgi.i......
  • Django 深入理解WSGI协议
    起步惭愧啊,惭愧啊,距离上一篇这个系列的文章已经是半年前的了,随着Django2.0的发布,感觉之前分析的1.10.5版本似乎有点老了,我看了一下,好在和我前面文章分析的内容差异不大,基本上也是可以就着前面的分析内容来品尝最新的django代码。那我接下来阅读的版本就从当前能获取的2.0......