专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

一代版本一代神,Docker在Win10极速体验Django

  就在去年(2019年),Django官方发布3。0版本,内核升级宣布支持Asgi,这一重磅消息让无数后台研发人员欢呼雀跃,弹冠相庆。大喜过望之下,小伙伴们兴奋的开箱试用,结果却让人大跌眼镜:非但说好的内部集成Websocket没有出现,就连原生的异步通信功能也只是个壳子,内部并未实现,很明显的换汤不换药,这让不少人转身投入了FastAPI的怀抱。不过一年之后,今天8月,Django3。1版本姗姗来迟,这个新版本终于一代封神,不仅支持原生的异步视图,同时也支持异步中间件,明显整了个大活。
  本次我们利用Docker制作一款基于Django3。1。1的项目镜像,实际体验一下Django原生异步的魅力。
  首先在宿主机安装新版DjangopipinstallDjango3。1。1
  新建一个项目,名字为django31djangoadmin。pystartprojectdjango31。
  进入项目目录可以发现,熟悉的入口文件mange。py已经消失不见,新增了asgi。py文件用来启动项目,这里我们使用异步服务器uvicorn来启动新版Django,而uvicorn对windows系统支持不够友好,所以使用Docker来构建一个运行镜像,简单方便,进入django31目录,新建Dockerfile:FROMpython:3。7WORKDIRProjectdjango31COPYrequirements。txt。RUNpipinstallrrequirements。txtihttps:pypi。tuna。tsinghua。edu。cnsimpleCOPY。。ENVLANGC。UTF8WORKDIRProjectCMD〔uvicorn,django31。asgi:application,host,0。0。0。0〕
  这里需要注意一点,Docker每创建一个容器,会在iptables中添加一个规则,每个容器都会在本机127。17。X。X范围内分配一个地址,容器绑定的主机端口会映射到本机的127。17。X。X的容器抛出端口上。所以容器内部的项目绑定的ip不能是127。0。0。1,要绑定为0。0。0。0,这样绑定后容器内部app的实际ip由Docker自动分配,所以这里uvicorn启动参数需要用host强制绑定为0。0。0。0。
  随后在项目中创建依赖文件requirements。txt:django3。1。1uvicornhttpx
  开始编译镜像文件:dockerbuildtdjango31。
  编译成功后大概1g左右liuyue:django31liuyuedockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEdjango31lateste8afbbbb930530minutesago919MB
  然后我们来启动项目:dockerrunitrmp8000:8000django31
  后台显示启动顺利,绑定在容器内的0。0。0。0:liuyue:django31liuyuedockerrunitrmp8000:8000django31INFO:Startedserverprocess〔1〕INFO:Waitingforapplicationstartup。INFO:ASGIlifespanprotocolappearsunsupported。INFO:Applicationstartupcomplete。INFO:Uvicornrunningonhttp:0。0。0。0:8000(PressCTRLCtoquit)
  浏览器访问:http:localhost:8000
  熟悉的小火箭又起飞了,接下来我们来编写第一个异步视图views。pyfromdjango。httpimportHttpResponseasyncdefindex(request):returnHttpResponse(异步视图)
  修改一下路由文件urls。pyfromdjango。contribimportadminfromdjango。urlsimportpathfromdjango31。viewsimportindexurlpatterns〔path(admin,admin。site。urls),path(,index)〕
  重新编译镜像:dockerbuildtdjango31。dockerrunitrmp8000:8000django31
  访问http:localhost:8000
  没有问题,还记得去年我们曾经使用Siege对Django2。0版本进行压力测试吗?现在我们再来测一下siegec150t60Svb127。0。0。1:8000
  150个并发持续一分钟,看看新版Django的抗压能力怎么样:liuyue:liuyuesiegec150t60Svb127。0。0。1:8000{transactions:10517,availability:100。00,elapsedtime:59。70,datatransferred:0。12,responsetime:0。84,transactionrate:176。16,throughput:0。00,concurrency:148。58,successfultransactions:10517,failedtransactions:0,longesttransaction:1。13,shortesttransaction:0。45}liuyue:liuyue
  从测试结果看,整体性能虽然没有质的提高,但是也还算是差强人意,乞丐级主机在uvicorn的加持下单机200个左右并发还是能抗住的。
  接下来我们来体验一下真正的技术,Django内置的原生异步任务,分别同步和异步两种方式使用httpx来请求接口,方法中人为的阻塞10秒钟:fromdjango。httpimportHttpResponseimportasynciofromtimeimportsleepimporthttpx异步请求asyncdefhttpcallasync():fornuminrange(10):awaitasyncio。sleep(1)print(num)asyncwithhttpx。AsyncClient()asclient:rawaitclient。get(https:v3u。cn)print(r)同步请求defhttpcallsync():fornuminrange(10):sleep(1)print(num)rhttpx。get(https:v3u。cn)print(r)
  再分别通过同步和异步视图进行调用:asyncdefasyncview(request):loopasyncio。geteventloop()loop。createtask(httpcallasync())returnHttpResponse(非阻塞视图)defsyncview(request):httpcallsync()returnHttpResponse(阻塞视图)
  修改路由:fromdjango。contribimportadminfromdjango。urlsimportpathfromdjango31。viewsimportindex,asyncview,syncviewurlpatterns〔path(admin,admin。site。urls),path(,index),path(async,asyncview),path(sync,syncview),〕
  重新编译:dockerbuildtdjango31。dockerrunitrmp8000:8000django31
  访问http:localhost:8000sync看看同步的效率
  很明显过程中阻塞了10秒,然后我们才等到页面结果:
  再来试试不一样的,访问http:localhost:8000async
  16毫秒,无视阻塞,瞬间响应。
  通过动图我们可以发现,后端还在执行阻塞任务,但是前段已经通过异步多路复用将请求任务结果返回至浏览器了。
  虽然这已经很不错了,但是稍有遗憾的是,目前Django内置的ORM还是同步机制,也就是说当我们读写数据库的时候还是阻塞状态,此时的场景就是异步视图内塞入了同步操作,这该怎么办呢?可以使用内置的synctoasync方法进行转化:fromasgiref。syncimportsynctoasyncasyncdefasyncwithsyncview(request):loopasyncio。geteventloop()asyncfunctionsynctoasync(httpcallsync)loop。createtask(asyncfunction())returnHttpResponse((viasynctoasync))
  由此可见,Django3。1在异步层面真的开始秀操作了,这就带来另外一个问题,既然原生异步任务已经做得这么牛逼了,我们到底还有没有必要使用Celery?
  其实关于Django的异步视图只是提供了类似于任务或消息队列的功能,但功能上并没有Celery强大。如果你正在使用(或者正在考虑)Django3。1,并且想做一些简单的事情(并且不关心可靠性),异步视图是一种快速、简单地完成这个任务的好方法。如果你需要执行重得多的、长期运行的后台进程,你还是要使用Celery。
  简而言之,Django3。1的异步任务目前仅仅是解决Celery过重的一个简化方案而已。
  结语:假如我们说,新世纪以来Python在Web开发界有什么成就,无疑的,我们应该说,Django和Flask是两个颠扑不破的巨石重镇,没有了它们,Python的web开发史上便要黯然失光,Django作为第一web开发框架,要文档有文档,要功能有功能,腰斩对手于马下,敏捷开发利器。Django3。1的发布仿佛把我们又拉回到了Django一统江湖的年代,那个美好的时代,让无数人午夜梦回。

陈春花陷入舆情风波背后谁在炮制上万条华为军师网文?7月初,华为公司的一则声明,让管理学学者陈春花数次登上热搜。不到一个月时间里,陈春花先被华为公开撇清关系,后被公众质疑博士学历,最终她回应舆论后辞去北大教职,北京大学终止其聘用合同李炜的愚昧从快男冠军到众人唾弃,只用了2年时间最近,07届快乐男声频频登上热搜,苏醒陆虎张远王栎鑫陈楚生王铮亮等过气歌手重聚上综艺,没想到勾起一波回忆杀的同时笑点拉满。在这之前,几个人曾开了场连麦直播,看热闹不嫌事儿大的围观群华为matepadpro和ipad选择?目前手持matepadpro,总结绝对够用!入手matepadpro已经三个月了,基本每天都在使用,128G,下载了几十个app,目前空间占用不到一半!首先你入手之前一定要明白1。杰哥排列五8月10日最新规律数据分析推荐千234789个1456782XX12XX42XX52XX62XX72XX83XX13XX43XX53XX63XX73XX84XX14XX44XX54XX64XX74XX87XX1读完博士,我发现我未来的孩子依然有可能身处寒门我很小的时候就被灌输了一个真理发达国家失业率第二的是博士。第一是什么?第一是小学没毕业的。举两个例子。都记得做孪生素数的张益唐吧,老张当年毕业之后失业,居然在赛百味端过盘子。张益唐芯片法案阻挡不了中国科技发展近期,美国参议院通过了一项投入2800亿美元,旨在增强美国芯片产业及科研实力对抗中国的芯片与科技法案。美媒及部分议员直言不讳地叫嚣加强美国的产业和技术优势以对抗中国,为美国与中国的3000亿芯片巨头紫光集团前董事长被查?今年7月中旬,紫光集团原董事长赵伟国被有关部门从北京家中带走,目前仍处于与外界失联的状态。根据百度百科显示,赵伟国新疆沙湾县人,1985年考入清华大学电子工程系(原无线电电子学系)如何设计出高逼格的logo,这些技巧你知道吗?今天来教大家设计出一个高逼格or充满创意感的logo一确定传播元素首先要明白咱们设计logo的目的是为了传播,在设计logo的时候我们就要思考我们想要把什么样的信息传播给大众,主要台湾问题白皮书公布后,蔡英文又向全民宣战,马英九公开驳斥8月10日,国务院台办国务院新闻办发表台湾问题与新时代中国统一事业白皮书,重申台湾是中国一部分的事实和现状,也表明了祖国统一的历史进程已经不可阻挡。此次发布的白皮书,将促统和反独并90多岁慰安妇在等着日本政府的道歉黄友良永远记得,那是农历十月初五。她正在稻田里干活,突然听到不远处传来一声喊叫。她抬头看见十几个日本兵。然而,稻田里的泥土减缓了黄有良逃跑的速度,但他始终没有逃脱。在被几名日军欺负千万!不要在周末跟人约会好家伙一整个大无语作为网速高达8G的冲浪达人不知道各位铁汁在冲浪时有没有一不小心就被人监控了这年头上网越来越难了拆监?懂?你不止一个人人快来感受下网友的真实写照每一个都是我本人没错了人间真实梗图大放
心理健康为情绪命名500个情绪词汇你用过多少?认知情绪,首先需要给情绪命名。出生后的第一个6年里,发展情绪比发展认知更重要。因为它会帮助儿童建立自己和自己的关系,帮助儿童进入自己的内心世界,儿童也需要借此得出他内在世界对外在世赛力斯最担心的事情来了自己或不再是华为的唯一不管大家承认不承认,赛力斯与华为合作,成立AITO品牌,推出问界系列汽车后,彻底的火了,成为了2022年国内新能源市场的一匹大黑马。目前问界系列已经连续三个月,月销超过1万辆了,这搞懂这些烹饪方法,让你厨艺大增!分享7种最常用烹饪方式要说哪个国家的美食最好吃,咱中国毋庸置疑肯定是第一,去哪儿都能吃到好吃的食物,中国菜是世界三大菜系之一,现在分为鲁菜川菜粤菜闽菜苏菜浙菜湘菜和徽菜这八大菜系。咱们中国的烹饪方式实在新华全媒丨千年古村的多种打开方式江西流坑古村业态开发见闻新华社南昌11月15日电题千年古村的多种打开方式江西流坑古村业态开发见闻新华社记者贾伊宁霍丹彤拆除破旧牛栏,建起牛栏咖啡馆穿上古代服饰,还原历史故事体验非遗项目,品尝传统美食在江西方向比努力更重要吗其实方向与努力都很重要,不过方向的确比努力更重要。为什么这么说呢?首先,在确定做一件事情之前,我们首先要明确自己的目标与方向,正确选择努力的方向。如果一旦方向选错了,努力的结果就会成事不是某一天,而是底下努力的每一天努力不一定成功,不努力成功和你一定没有什么关系。准备不一定有用,不准备就算有用你找不到东西去用。现在的这个社会,大家都很着急。着急着苦大钱,着急着某一天就发家致富成为百万富翁。哦,真有勇气,泽连斯基抵达赫尔松前线乌克兰已经准备好和平赫尔松地区,已然成为了俄乌冲突中最受关注的焦点。就像塞尔维亚总统武契奇说得一样,赫尔松地区战役的重要程度,不下于曾经的斯大林格勒保卫战。事实上,俄乌两国也是这么认为的。就像俄罗斯国运气是努力的附属品(随笔)人生,确实有所谓的运气一说,但运气又是可遇不可求,欲求不得的东西。所以,我们只能感叹离去的都是风景,留下的才是人生,不属于你的可能与你擦肩而过,属于你的躲也躲。我们对躺在红地毯上出桂林山水就是一幅天然水墨,让人沉醉不知归路桂林山水甲天下,阳朔山水甲桂林,最爱还是遇龙河的山水田园风光。遇龙河是漓江在阳朔境内最长的一条支流,全长43。5公里,流域面积158。47平方公里,流经阳朔县的金宝葡萄白沙阳朔高田2024年机关事业单位养老金将迎来三个调整,待遇将更高,真的吗?视频加载中截至2022年,机关事业单位人员养老金并轨过渡期已经过去了八年,等到2024年机关事业单位退休人员的养老待遇核定办法,将和企业退休人员的养老待遇核定办法保持一致。那么,2儿子扒同学衣服只为给人排毒?哈哈老师状告细节给我气笑了01hr欠打啊02hr03hr玛勒戈芭紫04hr女生说啥就得顺着夸05hr一块钱没了06hr看得出来学姐很着急07hr确实不懂08hr好好的备胎,就这么没了09hr大型社死现场10
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网