HTTP服务器

基于TCP的web服务器:使用套接字与并发模式

向客户端返回HTML页面,向程序员返回API

 

10.1WSGI

Python服务被编写为CGI脚本,收到请求出发CGI脚本。

服务器分割HTTP请求,参数以环境变量传入CGI脚本

为每个请求启动新进程

 

服务器同时支持静态与动态内容

web服务器网关接口:WSGI

任何问题都可以通过添加中间层解决

通过WSGI提供的中间层,python编写的HTTP服务与Web服务器交互

 

WSGI:调用惯例。

WSGi应用程序:可被调用,Input:2(environ字典——CGI环境变量的扩充,可调用对象)

return:可迭代对象生成字符串,或直接返回字符串

 

未来Python服务:一系列WSGI包装函数。提供:认证,捕捉异常,记录日志等功能

主要原因:应用程序/框架与web服务器之间的可插拔性

 

10.2异步服务器与框架

WSGi尚未支持协程的异步服务器

WSGi可调用对象设计面向传统的多线程,多进程服务器

需要IO操作时,可调用对象被阻塞

没有提供可调用对象返还控制权给主服务器的机制(主程序轮流调度不同可调用对象)

异步将整个逻辑分为多个小型非阻塞代码块

 

处理异步问题的python 项目,在各自的引擎上提供一个HTTP服务器,自行指定调用惯例(将解析得到的请求信息传递给处理请求的代码)

无法单独选择异步服务器与web框架

 

asyncio引擎:提供一个统一的接口,不同的异步框架直接用不同的事件循环实现

没有指定专用于HTTP消息的API

 

使用异步引擎需选择合适的服务器——框架(解析请求构造响应)组合

 

10.3前向代理与反向代理

HTTP代理:HTTP服务器,接收请求(服务器),转发(客户端)

前向(客户端):缓存重复请求的资源。随着隐私与安全的强化,请求不可解析。

 

反向代理:保存缓存。检查有效期。缓存失效则将请求发送给服务器

审查请求的合法性

缓存相关的HTTP头与客户端相关,也与服务器架构间通信相关

中间层缓存

 

10.4  4种架构

python服务器,直接调用WSGI接口

如果使用异步引擎,服务器与框架必须运行在同一进程

 

Apache  c引擎  静态资源请求

mod_wsgi启动守护进程,调用python解释器

不适用于异步框架

 

前端服务器Apache:返回静态文件,负载均衡

         :反向代理python动态资源服务

 

反向代理——Apache——pythonHTTP服务器

 

架构的选择:Cpython的三个运行时特性,解释器内存占用大,解释器运行慢,全局解释器锁(GIL)

GIL:禁止多个线程同时运行Python字节码

  鼓励多个独立的进程,而非共享进程空间的多个python线程。相对的解释其占内存,同时存在的python实例有限,进程数有限。

 

 

10.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

传统的而

 

posted on 2018-06-26 20:08  秦梦超  阅读(141)  评论(0编辑  收藏  举报

导航