WSGI、CGI、FastCGI 和 mod_python 在 Python 方面的区别和用途?

Posted

技术标签:

【中文标题】WSGI、CGI、FastCGI 和 mod_python 在 Python 方面的区别和用途?【英文标题】:Differences and uses between WSGI, CGI, FastCGI, and mod_python in regards to Python? 【发布时间】:2011-04-25 15:10:50 【问题描述】:

我只是想知道不同 CGI 的区别和优势是什么。哪一个最适合 python 脚本,我将如何告诉脚本使用什么?

【问题讨论】:

mod_wsgi 更快吗?我现在的服务器使用CGI,有什么理由切换? 可能重复:***.com/questions/219110/… 我们无法告诉您 mod_wsgi 在您的环境中是否会更快。您必须在您的环境中使用您的约束、您的应用程序和您的配置来实际测量它们。 mod_wsgi 仅适用于 Apache。 2012年还是最流行的吗? 【参考方案1】:

您的问题的部分答案,包括 scgi。

What's the difference between scgi and wsgi? Is there a speed difference between WSGI and FCGI? How Python web frameworks, WSGI and CGI fit together

CGI 与 FCGI

懒惰,没有自己写。来自***:http://en.wikipedia.org/wiki/FastCGI

FastCGI 不是为每个请求创建一个新进程,而是使用持久进程来处理此类请求。可以配置多个进程,增加稳定性和可扩展性。每个单独的 FastCGI 进程可以在其生命周期内处理许多请求,从而避免每个请求进程创建和终止的开销

【讨论】:

有一个 FastCGI 标准输入输出库 (marcos),可以让您制作一个能够同时作为 CGI 和 FastCGI 应用程序运行的程序:fastcgi.com/devkit/doc/fastcgi-prog-guide/ap_guide.htm 关于 FastCGI 的问题:当 php 本身是阻塞语言时,它如何处理与一个进程的同时连接?如果我有一些东西 "sleep(100)" 怎么办。它不会阻止其他用户的进程吗?谢谢【参考方案2】:

还有一个很好的 CGI、WSGI 和其他选项的背景阅读器,以官方 python HOWTO 的形式:http://docs.python.org/2/howto/webservers.html

【讨论】:

这对初学者来说是一个很好的资源。 该网址似乎已过时。但这一个有效:docs.python.org/2/howto/webservers.html【参考方案3】:

在像Django 这样的项目中,您可以使用来自Flup module 的WSGI (Web Server Gateway Interface) 服务器。

WSGI 服务器使用一个或多个协议封装后端进程:

FastCGI(调用服务器进程) SCGI(Simple Common Gateway Interface - 更简单的 FastCGI) AJP (Apache JServ Protocol - Java FastCGI) mod_python(根据请求运行预加载的代码 - 使用大量 RAM) CGI(Common Gateway Interface,每个请求启动一个进程 - 慢)

【讨论】:

【参考方案4】: FastCGI 是一种长寿命的 CGI,它会一直运行。 使用 FastCGI,时间会更短。 由于是多进程,FastCGI 会比 CGI 消耗更多的内存。

In Detail Diff between FastCGI vs CGI

【讨论】:

以上是关于WSGI、CGI、FastCGI 和 mod_python 在 Python 方面的区别和用途?的主要内容,如果未能解决你的问题,请参考以下文章

keystone系列二:网关协议cgi,fastcgi,wsgi,uwsgi

何时需要 CGI/FastCGI,何时不需要

如何理解 CGI,WSGI

什么是FastCGI, PHP-FPM

如何在IIS下设置Python WSGI服务器?

cgi和fastcgi