为什么要避免使用LAMP托管的Python CGI?

时间:2009-03-10 12:32:07

标签: php python .htaccess cgi

我多年来一直在使用PHP。最近我遇到过很多论坛帖子,指出 PHP已经过时,现代编程语言更容易,更安全等等。

所以,我决定开始学习Python 。因为我习惯使用PHP,所以我只是通过上传.htaccess文件来开始构建页面:

addtype text/html py
addhandler cgi-script .py

然后,我的示例页面如下:

#!/usr/bin/python
print "content-type: text/html\n\n"
print "html tags, more stuff, etc."

这很好用。但是,我在一篇帖子中发现了一条评论说 CGI不是使用Python的最佳方式。当然,它没有提到最好的方式。

为什么使用CGI不是使用Python的最佳方式?有什么替代方案?

是否有一些完全不同的方式来设置一个简单的Python网站?我应该在.htaccess和.py文件之外看一些完全不同的范例吗?

相关

6 个答案:

答案 0 :(得分:11)

经典CGI根本不是使用任何东西的最佳方式。经典CGI服务器必须为每个请求生成一个新流程

至于Python,你几乎没有其他选择:

答案 1 :(得分:5)

  

为什么使用CGI不是使用Python的最佳方式?

我会坚持CGI一点点。这对开发环境很有好处。

接线简单,您不必担心模块重新加载问题。自然表现很糟糕,但对于开发者你并不在意。

当然你应该直接写入WSGI接口而不是CGI。然后,您可以使用以下方式通过CGI进行部署:

wsgiref.handlers.CGIHandler().run(application)

并使用相同的应用程序对象通过mod_wsgi部署其他任何您喜欢的生产环境中的其他WSGI服务器,其中速度很重要(以及您希望它尽可能接近生产的测试环境)。

答案 2 :(得分:3)

mod_wsgi是正确的选择。它几乎在所有方面都优于CGI。

答案 3 :(得分:3)

真的,这只是一个效率问题 - CGI为每个请求产生一个全新的流程,这对于它的功能非常重要。

PHP也可以通过CGI运行,但是mod_php将解释器嵌入到apache中。 有一个mod_python可以完成同样的工作,mod_wsgi就像Yuval所说的那样。

答案 4 :(得分:2)

除了别人提出的建议外,你应该考虑使用某种框架。您可以而且应该使用FastCGI,mod_python或mod_wsgi,但它们并非真正用于直接编写代码。我可以建议以下其中一种吗?

答案 5 :(得分:2)

Python文档中有一个页面描述了advantages and disadvantages of the various possibilities

<强> mod_python的

  

(...)这些是编写新程序时应避免使用mod_python的原因。

<强> WSGI

  

Web服务器网关接口或   简称WSGI目前是最好的   Python网站的可能方式   节目。虽然很棒   程序员编写框架,   普通人不需要进去   直接接触它。

FastCGI和东西

  

目前,FastCGI从未直接使用过。

相关问题