这篇文章主要介绍瓶框架的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>瓶是一个web框架强>
从客户端发向服务器的请求和服务器处理请求是的线程之间是什么关系?
比如发起10个请求,那么瓶开启多少个线程来处理请求?(描述不够精确)
瓶是不会开启线程的,那么线程是谁来开启的呢?
其实是由网络服务器,外部服务器开启的,我们的瓶框架或者写的项目代码,如果没有外部服务器是无法运行的,如果要让项目跑起来的话,必须要有一个网络服务器,所以说,我们看到的烧瓶中的app.run()就是启动烧瓶中自带的内置的网络服务器,如果我们要把代码部署到生产环境中去,真实的给用户使用的话,一般的是不会使用瓶自带的网络服务器的,而是选择另外的网络服务器部署烧瓶的代码。
默认的情况下,瓶自带的web服务器是以单进程单线程来响应我们的客户端请求。大家很容易想到,10个请求进来是没有办法同事执行的,已给请求执行完之后才能执行另一个请求。当然,瓶自带的web服务器也可以开启多线程或者多进程模式,可以在pycharm中看到。
得到app import create_app app =, create_app () if __name__ ==, & # 39; __main__ # 39;:,,,, #,打印(& # 39;id为& # 39;,+,str (id (app)), +, & # 39;启动& # 39;) ,,,app.run(主机=& # 39;0.0.0.0 # 39;,,debug=True),, #,单进程单线程 ,,,app.run(主机=& # 39;0.0.0.0 # 39;,,debug=True,, threadad=True),, #,单进程多线程,进程默认为1 ,,,app.run(主机=& # 39;0.0.0.0 # 39;,,debug=True,, threadad=True,,流程=2),,#,多进程多线程,进程流程默认为1
对于一个网站而言,必须要有一定的承受并发的能力,请求只是一个变量名,真正的实例对象是请求()。同一时刻会有多个请求,而每一个请求的请求信息极有可能是不同的。这就会造成我们实际发送过来的请求信息是不相同的。那么用一个变量请求怎么代表不同用户的请求信息呢?
由于单线程是顺序执行的,只有处理完一个请求才能处理另一个请求,对于单线程来说,请求就像排队一样,请求进来之后,瓶会实例化一个请求对象,然后用请求来装载我们的请求信息,这个时候我们只有一个实例化的要求,所以啊,用请求变量名是可以拿到我们要的请求信息的,所以请求变量名总是会指向当前的请求,请求就不会出现混乱。
多线程的请求,(对象是保存状态的地方)
怎么解决呢,我们自己想一想,
request1 =,请求() 时间=request2 请求() request3 =,请求()
线程里有什么可以唯一确定一个线程呢,那就是线程的id号,可以作为关键,在瓶中就是采用的这种原理来解决的,这种用不同的id号作为键,其实就是线程隔离,线程隔离只是一种思想,并不一定都是用字典实现,还可以用其他的方式实现。
以上是“瓶框架的案例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!