浏览器与服务器交互过程CGI 与 UWISG 的由来

一,浏览器与服务器交互过程CGI 与 UWISG 的由来!
1, Web 服务器从客户端接到了请求(即 GET 或者 POST),并调用相应的应用程序。它然后等待 HTML 页面,
2,与此同时,客户端也在等待。一旦应用程序处理完成,它会将生成的动态 HTML 页面返回服务器端,
3,然后服务器端再将这个最终结果返回给用户。
4,对于表单处理过程,服务器与外部应用程序交互,收到并将生成的 HTML 页面通过 CGI 返回客户端
二,浏览器与服务器动态交互过程
所有的数据交互都将发生在 Web 客户端(基于用户的行为)、 Web 服务器端和 CGI 应用程序间。
   CGI 读取表单数据:
Python CGI 脚本启动时会实例化FieldStorage这个类,通过 Web 服务器从 Web 客户端读出相关的用户信息。
在实例化完成后,其中会包含一个类似字典的对象,它具有一系列的键值对。键就是通过表单传入的表单条目的名字,而值则包含相应的数据
CGI 读取填充html数据
取出 FieldStorage之中的值,将这些值分别放入拼接的字符串(此字符串是响应的html的页面)之中。
CGI 的缺点
CGI 进程(类似 Python 解释器)针对每个请求进行创建,用完就抛弃。如果应用程序接收数千个请求,创建大量的语言解释器进程很快就会导致服务器停机。
有两种方法可以解决CGI这个问题,一是服务器集成, 二是外部进程.
服务器集成(服务器api):
不将服务器切分成多个语言解释器来分别处理请求,而是生成函数调用,运行应用程序代码,在运行过程中进行响应。服务器根据对应的 API 通过一组预先创建的进程或线程来处理工作。
外部进程
当有请求进入时,服务器将这个请求传递到外部进程中。这种方式的可扩展性比纯 CGI 要好,因为外部进程存在的时间很长,而不是处理完单个请求后就终止

UWISG 沿袭了 CGI 的优点 把 HTTP 协议转化成 WSGI 协议,让 Python 可以直接使用。 
uwsgi 是一种 uWSGI 的内部协议,使用二进制方式和其他应用程序进行通信。
posted @ 2018-09-03 17:13  十七楼的羊  阅读(294)  评论(0编辑  收藏  举报