我多年来一直在使用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文件之外看一些完全不同的范例吗?
答案 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从未直接使用过。