什么是简单的英文WSGI和CGI?
每当我读WSGI或CGI时,我都会畏缩。 我已经尝试过阅读,但没有真正卡住。
简单的英语是什么?
它只是pipe道请求到terminal并redirect输出?
WSGI在Web服务器启动时运行Python解释器,既可以作为Web服务器进程的一部分(embedded模式),也可以作为单独的进程(守护进程模式)运行,并将脚本加载到其中。 每个请求都会在被调用的脚本中产生一个特定的函数,请求环境作为parameter passing给函数。
CGI将脚本作为一个单独的进程运行,并使用环境variablesstdin和stdout与其进行通信。
从完全退一步的angular度来看,Blankman,这里是我的Web服务网关接口的“Intro Page”
第一部分:WEB服务器
Web服务器提供响应。 他们坐下来,耐心地等待,然后突然没有任何警告:
- 一个客户进程发送一个请求。 客户端进程可能是一个Web服务器,一个机器人,一个移动应用程序,无论如何。 这只是“客户”
- networking服务器收到这个请求
- 故意咕 various各种事情发生(见下文)
- networking服务器发回一些东西给客户端
- Web服务器再次坐
Web服务器(至less,更好的)是非常非常擅长的。 他们根据需求扩大和缩小处理,他们可靠地与最客气的客户进行对话,而不必担心这个问题。 他们只是继续服务。
这是我的观点:Web服务器就是这样的:服务器。 他们对内容一无所知,对用户一无所知,事实上除了如何等待并且可靠地回复。
您select的Web服务器应该反映您的交付偏好,而不是您的软件。 您的networking服务器应负责服务,而不是处理或逻辑的东西。
第二部分:(PYTHON)软件
软件不坐。 软件只存在于执行时间。 当涉及到环境的意外变化(文件不在预期的位置,参数被重命名等)时,软件并不是非常适应。 虽然优化应该是您devise的核心原则(当然),但是软件本身并不能优化。 开发人员优化。 软件执行。 软件在上面的“故意嘟</s>”部分中做了所有的事情。 可能是任何事情。
您的select或软件devise应该反映您的应用程序,您select的function,而不是您select的Web服务器。
这是传统的“编译”语言到Web服务器的方法变得痛苦的地方。 您最终将代码放在应用程序中,以应付物理服务器环境,或者至less被迫select一个适当的“包装”库来包含在运行时间,以便给出networking服务器上统一的错觉。
那么什么是WSGI?
那么,最后是什么WSGI? WSGI是一组规则 ,分为两部分。 他们的写作方式可以融入任何欢迎融合的环境。
第一部分是为Web服务器端编写的,他说:“好的,如果你想要处理一个WSGI应用程序,下面就是这个软件在加载的时候会怎样想,下面是你必须提供给应用程序的东西。是每个应用程序所需的接口(布局),而且,如果出现任何问题,应用程序将如何思考以及如何预期它的行为。
第二部分是为Python应用软件编写的,他说:“好吧,如果你想要处理一个WSGI服务器,服务器在联系你的时候会怎么想,下面是你必须提供给服务器的东西,这里是每个服务器所需要的接口(布局),而且,如果出现任何问题,下面是应该如何处理的问题,以及如何告诉服务器。
所以你有它 – 服务器将是服务器和软件将是软件,这是一种方式,他们可以相处得很好,而不必为了另一方的具体情况而做任何补贴。 这是WSGI。
另一方面,mod_wsgi是Apache的一个插件,它可以与WSGI兼容的软件进行交互,换句话说,mod_wsgi是Apache规则中的规则之一。
至于CGI ….问别人:-)
如果你对这个领域的所有术语都不清楚,让它面对,它是一个令人困惑的首字母缩略词,还有一个很好的背景阅读器,以官方的Python HOWTO的forms讨论CGI与FastCGI与WSGI等在: http : //docs.python.org/howto/webservers.html 。 我希望我会先读它。
CGI和WSGI都定义了程序可以用来处理Web请求的标准接口。 CGI接口的级别低于WSGI,并且涉及服务器设置包含来自HTTP请求的数据的环境variables,程序返回的格式非常像一个纯粹的HTTP服务器响应。
另一方面,WSGI是一个特定于Python的稍高一级的接口,允许程序员编写与服务器无关的应用程序,并且可以将其封装在其他WSGI应用程序(中间件)中。