本篇内容主要讲解“基于fastapi框架的异步怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于fastapi框架的异步怎么使用”吧!一直以来博主都是一直使用Django进行开发的,最近公司开始使用fastapi进行小项目的开发通过博主对fastapi文档的翻阅,发现fastapi最引人免费云主机域名注意的就是他的异步支持。(当然最新版的django也已经支持异步请求)异步相对应的就是同步同步就是多件事排队做而异步就是多件事同时做django采取的是多线程实现异步。当一个线程在做耗时操作的时候进行线程间切换,给人一种多个线程在同时运行的感觉。(当然了,多核cpu确实是真正的多线程。)。切换的同时不仅要重新获取GIL锁,还要重新加载和记住上下文,这些开销对服务的性能是有一定影响的相信大家都听说过协程这个概念,协程是在一个线程间进行用户级资源切换的概念是不是很抽象?我来解释一下:首先我们要了解线程属于进程,而协程属于线程写过爬虫的同学应该了解过yield关键字,他就可以简单的作为一个协程来用他可以构造一个生成器,可能有些同学会把生成器和一个普通的可迭代对象混为一谈(例如列表)但是这又跟协程有什么关系呢?是这样的,当用户要取一个元素的时候,这个生成器相当于被激活了,相当于开始占用线程资源,生成一个元素,返回之后就让出线程资源,直到用户取下一个元素。这就是协程的思想:它没有线程间切换时资源的消耗大,并且完全由用户控制fastapi由较为完善的异步处理方案(没有非常完善)他的基本语法与flask较为相似(虽然博主只写过一点flask)值得一提的是asgi异步网关协议,这个网关协议有完善的异步请求与websocket的支持。他对async/await有很好的支持对应的web服务器是Uvicorn我们可以使用sqlalchemy进行异步数据库查询其实一个web项目的性能瓶颈大部分还是在io方面(数据库查询,web请求,系统io)例如有些数据库查询确实耗时,我们又不想让他阻塞当前线程,我们就可以使用异步数据库查询fastapi会在你注明异步数据库查询的地方让出cpu资源,让他去处理别的东西(比如另一个请求)然后当你的数据库查询结束返回之后,再次回到当初让出资源的地方,继续往下执行。协程可以记住上下文,从而避免在线程间切换中针对上下文切换的资源消耗和关于GIL锁的资源消耗我们可以把计算机的动作大致分成两种,一种是计算型,一种是io型,当一个任务是计算型的时候,就意味着cpu要一直运行,这个时候我们是没法让出cpu资源的,而当一个任务是io型的,就相当于cpu一直在休息,在等待,这个时候我们就可以让出cpu的占用,让他去处理别的任务所以协程异步并不是所有场景都适用,他主要用于io场景。到此,相信大家对“基于fastapi框架的异步怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本篇内容主要讲解“php如何读取字符串后几个字符”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何读取字符串后几个字符”吧! 在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。