应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

2023年是时候更新你的技术武器库了AsgivsWsgi(F

  也许这一篇的标题有那么一点不厚道,因为Asgi(AsynchronousServerGatewayInterface)毕竟是Wsgi(WebServerGatewayInterface)的扩展,而FastAPI毕竟也是站在Flask的肩膀上才有了突飞猛进的发展,大多数人听说Asgi也许是因为Django的最新版(3。0)早已宣布支持Asgi网络规范,这显然是一个振奋人心的消息,2023年,如果你在Web开发面试中不扯一点Asgi,显然就有点落后于形势了。
  那么到底啥是Wsgi,什么又是Asgi,放心,不扯CGI,不扯各种抽象概念,简单粗暴理解:
  Wsgi是同步通信服务规范,客户端请求一项服务,并等待服务完成,只有当它收到服务的结果时,它才会继续工作。当然了,可以定义一个超时时间,如果服务在规定的时间内没有完成,则认为调用失败,调用方继续工作。
  Wsgi简单工作原理示意图:
  简单实现:WSGIexampledefapplication(environ,startresponse):startresponse(200OK,〔(ContentType,textplain)〕)returnbHello,Wsgi
  Asgi是异步通信服务规范。客户端发起服务呼叫,但不等待结果。调用方立即继续其工作,并不关心结果。如果调用方对结果感兴趣,有一些机制可以让其随时被回调方法返回结果。
  Asgi简单工作原理示意图:
  简单实现:Asgiexampleasyncdefapplication(scope,receive,send):eventawaitreceive()。。。awaitsend({type:websocket。send,。。。})
  简单总结一下:Asgi是异步的,Wsgi是同步的,而基于Wsgi的Flask是同步框架,基于Asgi的FastAPI是异步框架,就这么简单,那么同步框架和异步框架的区别到底在哪儿?为什么要把Flask换成FastAPI?
  不靠拍脑门儿、也不是道听途说、人云亦云。玩技术的应该用数据说话,论点永远依托论据,所以我们来简单对两款框架的性能做一个测试,首先分别安装依赖的库。
  Flask:pipinstallgunicornpipinstallgeventpipinstallflask
  FastAPI:pipinstallfastapipipinstalluvicorn
  我们首先干的一件事就是,看看Flask和FastAPI如何处理来自多个客户端的多个请求。特别是当代码存在效率问题时(比如数据库查询时间长这种耗时任务),这里故意使用time。sleep()来模拟耗时任务,为什么不用asyncio呢?因为众所周知的原因:time。sleep是阻塞的。
  Flask:fromflaskimportFlaskfromflaskrestfulimportResource,ApifromtimeimportsleepappFlask(name)apiApi(app)classRoot(Resource):defget(self):print(睡10秒)sleep(10)print(醒了)return{message:hello}api。addresource(Root,)ifnamemain:app。run()
  FastApi:importuvicornfromfastapiimportFastAPIfromtimeimportsleepappFastAPI()app。get()asyncdefroot():print(睡10秒)sleep(10)print(醒了)return{message:hello}ifnamemain:uvicorn。run(app,host127。0。0。1,port8000)
  分别启动服务
  Flask:python3manage。py
  FastAPI:uvicornmanage:appreload
  同时一时间内,开启多个浏览器,分别并发请求首页。
  Flask:http:localhost:5000
  FastAPI:http:localhost:8000
  观察后台打印结果:
  Flask:
  FastAPI:
  可以看到,同样的四次请求,Flask先是阻塞了40秒,然后依次返回结果,FastAPI则是第一次阻塞后直接返回,这代表了在FastAPI中阻塞了一个事件队列,证明FastAPI是异步框架,而在Flask中,请求可能是在新线程中运行的。将所有CPU绑定的任务移到单独的进程中,所以在FastAPI的例子中,只是在事件循环中sleep(所以异步框架这里最好不要使用time。sleep而是asyncio。sleep)。在FastAPI中,异步运行IO绑定的任务。
  当然这不能说明太多问题,我们继续使用鼎鼎有名的ApacheBench分别对两款框架进行压测。
  一共设置5000个请求,QPS是100(请原谅我的机器比较渣)。abn5000c100http:127。0。0。1:5000abn5000c100http:127。0。0。1:8000
  这里为了公平起见,Flask配合Gunicorn服务器,开3个worker,FastAPI配合Uvicorn服务器,同样开3个worker。
  Flask压测结果:liuyue:mytornadoliuyueabn5000c100http:127。0。0。1:5000ThisisApacheBench,Version2。3Revision:1826891gt;Copyright1996AdamTwiss,ZeusTechnologyLtd,http:www。zeustech。netLicensedtoTheApacheSoftwareFoundation,http:www。apache。orgBenchmarking127。0。0。1(bepatient)Completed500requestsCompleted1000requestsCompleted1500requestsCompleted2000requestsCompleted2500requestsCompleted3000requestsCompleted3500requestsCompleted4000requestsCompleted4500requestsCompleted5000requestsFinished5000requestsServerSoftware:gunicorn20。0。4ServerHostname:127。0。0。1ServerPort:5000DocumentPath:DocumentLength:28bytesConcurrencyLevel:100Timetakenfortests:4。681secondsCompleterequests:5000Failedrequests:0Totaltransferred:1060000bytesHTMLtransferred:140000bytesRequestspersecond:1068。04〔sec〕(mean)Timeperrequest:93。629〔ms〕(mean)Timeperrequest:0。936〔ms〕(mean,acrossallconcurrentrequests)Transferrate:221。12〔Kbytessec〕received
  FastAPI压测结果:liuyue:mytornadoliuyueabn5000c100http:127。0。0。1:8000ThisisApacheBench,Version2。3Revision:1826891gt;Copyright1996AdamTwiss,ZeusTechnologyLtd,http:www。zeustech。netLicensedtoTheApacheSoftwareFoundation,http:www。apache。orgBenchmarking127。0。0。1(bepatient)Completed500requestsCompleted1000requestsCompleted1500requestsCompleted2000requestsCompleted2500requestsCompleted3000requestsCompleted3500requestsCompleted4000requestsCompleted4500requestsCompleted5000requestsFinished5000requestsServerSoftware:uvicornServerHostname:127。0。0。1ServerPort:8000DocumentPath:DocumentLength:19bytesConcurrencyLevel:100Timetakenfortests:2。060secondsCompleterequests:5000Failedrequests:0Totaltransferred:720000bytesHTMLtransferred:95000bytesRequestspersecond:2426。78〔sec〕(mean)Timeperrequest:41。207〔ms〕(mean)Timeperrequest:0。412〔ms〕(mean,acrossallconcurrentrequests)Transferrate:341。27〔Kbytessec〕received
  显而易见,5000个总请求,Flask花费4。681秒,每秒可以处理1068。04个请求,而FastAPI花费2。060秒,每秒可以处理2426。78个请求。
  结语:曾几何时,当人们谈论Python框架的性能时,总是不自觉的嗤之以鼻,而现在,Python异步生态正在发生着惊天动地的变化,新的框架应运而生(Sanic、FastAPI),旧的框架正在重构(Django3。0),很多库也开始支持异步(httpx、Sqlalchemy、Mortor)。软件科技发展的历史表明,一项新技术的出现和应用,常常会给这个领域带来深刻的变革,古语有云:察势者智,顺势者赢,驭势者独步天下。所以,只有拥抱未来、拥抱新技术、顺应时代才是正确的、可持续发展的道路。

最新中国手机市场份额出炉vivo第一,小米第五,荣耀大杀四方2022年上半年,全球智能手机市场整体出货量大幅萎缩,面对消费者们换机购机热情的下降,各大手机厂商们也基本上开始以稳保基本盘为目标,不再盲目地全力冲击高端市场,无论是产品堆料还……西安创优互娱分享冒险手游遇见龙新手攻略西安创优互娱分享冒险手游遇见龙新手攻略。《遇见龙》是一款以驯龙冒险为题材的3D回合制卡牌对战手游,50条传说级神龙,三段式进阶造型升级。经典回合制玩法,轻松上手无门槛。合理搭配……冰雪之约中国之邀跟着总书记踏冰走雪天天学习2018年,平昌冬奥会闭幕式,在令世界惊艳的北京八分钟里,习近平主席通过视频发出2022年相约北京的邀请。而今,北京冬奥会即将迎来倒计时100天。习近平总书记十分……国乒全体弃赛!突尼斯挑战赛今天开打,张本智和伊藤美诚也不来北京时间10月24日晚,乒乓球WTT突尼斯挑战赛即将正式拉开帷幕。和之前的几站国际赛事一样,中国队这次依旧是全体放弃,转而进行封闭集训;而张本智和、伊藤美诚等外协会高手也都没来……全栈项目开发3应用国际化和权限处理效果English简体中文国际化对于现在的APP应用,国际化需求并不高,但是作为一项有用的功能,我们还是按部就班地去实现它,由于还未完成全局状态管理和全局事件……从被质疑水货,到如今成库里最信赖的队友,普尔为勇士带来了什么从被质疑水货,到如今稳定首发,普洱茶越泡越香,三年级的普尔为勇士带来了什么?本赛季的NBA常规赛已经开打了将近二十天,上赛季由于伤病原因,并且在季后赛附加赛中爆冷不敌孟菲……碳质球粒陨石中的碳化硅陨石颗粒中的碳化硅年龄介于太阳年龄至太阳形成前30亿年间。其中的大部分较为年轻,诞生在太阳形成前400万至3亿年间。是银河系70亿年前那次造星运动的证明。我今年发现的一颗……外资私募大佬竟遭遇1000万电信诈骗大案?个人声明详述近50外资私募大佬竟然遭遇千万级别电信诈骗?主角正是安盛私募基金管理(上海)有限公司董事长兼总经理钮某明,他的一则本人陈诉与声明文件在社交媒体被反复讨论。钮某明在声明中描……场均16。5分3。6篮板,命中率高达51。6,安东尼加盟湖人谁能想到,在NBA历史得分来到排行榜第九位的巨星安东尼,在生涯暮年会晚节不保,被媒体和球迷讽刺为球霸,觉得他的球霸式打法很难融入球队的体系。2019年休赛期,雷霆将安东尼……真正优秀的人,都有这3种思维本文首发于公众号创业酵母图片来自网络,版权归原作者所有知乎上有个提问:是什么造成了人与人的差距?其中一个高赞回答是:思维方式的不同。真正决定你人生高度的……荣耀Note20Pro携6000mAh大电池上线,八指操控1现在荣耀这个品牌的手机产品线基本已经完善,不管是高端旗舰机,还是中低端机型都有对应的选择,也正是因为如此,荣耀手机的整体销量恢复很快,在9月份的时候,荣耀手机在国内的销量占比已……库里45分10板勇士险胜快船开局两连胜勇士主场揭幕战115113击败快船,斯蒂芬库里得到45分10个篮板,勇士取得两连胜。库里上来就中三分,维金斯续上3记远投,快船这边祖巴茨多次篮下强吃,乔治中投、突破,快船……
LOL全明星颁奖典礼EDG大获全胜,唯独输了圣枪哥一人大家好哈。昨日,英雄联盟2021LPL全明星周末颁奖典礼上,公布了一大列奖项的名单,其中不仅涵盖选手、解说等常在观众面前出现的身影,也对许多幕后默默无闻的工作者进行了嘉奖……官方招商太赫兹小神吹全国招商代理,太赫兹小神吹真的有效吗!加入小神吹运营中心团队8大优势:1、教您如何布局利益最大化,快速回本赚钱;2、直接对接公司一手信息和核心领导,让团队处理问题少走弯路;3、【独家】赠送价值98……评价这些95后小花们张子枫,宋祖儿,关晓彤,赵今麦?张子枫不得不说,她不是为了挑合适她或者很好的剧本来演,我总觉得她在突破,突破啥我也不清楚,只是她演的角色都有些不一样,而且性子真的很老干部,上次看到一个圈内工作者说她能沉……弹琴的孩子骨龄偏大?结果娃10岁来月经,终身身高152cm人!人!人!每年一到放寒暑假,杭州市第一人民医院一个门诊就会迎来就诊高峰。这几天,市一医院小儿内分泌专科门诊每天用人山人海形容不为过,该科的汪笛副主任医师说,原本应该中午12点……za护肤品怎么样(资生堂za姬芮洗面奶怎么样)不定期的去角质能有效对皮肤进行深沉的清洁,使皮肤更加透亮有光泽,后续的护肤品也能得到更好的吸收。油性肌肤的妹子也许可以一周去一次角质,但是干性肌肤的妹子可能要半个月才需要去角质……哪里卖古装(北京哪里卖古装)宽袍广袖、罗裙飘飘,如今在街头巷尾越发常见,也正是因为汉服热的持续走高,令京城内的汉服体验店迅速延伸至更多街巷。北京商报记者调查发现,与一年前北京市内有20余家汉服体验店相比,……回忆老辽篮(九)辽篮85一代的稳定投手伙伴们早上好今天是2022年1月26日星期三,又是周中了,今天早上咱们继续分享回忆老辽篮系列文章,今天第九集咱们说说辽篮85一代的神投手。说起辽宁男篮858687这三个年龄段的……罚单多久交(外省罚单怎么交罚款)随着生活水平的不断提高,汽车已经从以前的奢侈品,转变为公众都可以承受的生活必需品,为人们的日常出行(旅行)提供了极大的便利与舒适。不过汽车在给我们带来方便的同时,也是带来了许多……锅包肉怎么做(家常做锅包肉的步骤)大家好,我是第一美食的阿飞,阿飞有更多的家常菜供大家参考。大家都说好久没吃锅包肉了,很是想念那种酸酸甜甜的味道。今天就去市场买了一块上好的猪里脊肉。看看现在的猪肉价……10国8商会齐聚缦合北京,开启对话世界经济的全新纪元合作促进发展,携手共创未来。12月8日,由英国、加拿大、西班牙、丹麦、芬兰等10国、8商会会长共同出席的北京外商俱乐部(BFIC)理事会换届筹备工作会议,在缦合middot;北……情绪是什么(做情绪的主人ppt)http:ah。zgjsks。comhtml2021jyjxzs092381624。html人世间悲欢离合、悲喜不定之时常有,人们的生活状态也总是被不稳定的情绪而左右。在如此浮……NASA计划发送地球信息并邀请外星人回应专家可能引发入侵近日,英国科学家表示,美国国家航空航天局(NASA)一项将地球信息发送到外太空的计划可能会引发危险后果,包括潜在外星人的入侵。目前,NASA领导的研究团队正在支持一项名为……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网