23

我已经使用 PHP 多年了。最近我看到很多论坛帖子说PHP 已经过时,现代编程语言更容易、更安全等等。

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

addtype text/html py
addhandler cgi-script .py

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

#!/usr/bin/python
打印“内容类型:文本/html\n\n”
打印“html标签,更多的东西,等等。”

这工作正常。但是,我在一篇文章中看到一条评论说CGI 不是使用 Python 的最佳方式。当然,它没有提到什么最好的方法。

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

没有其他方法可以建立一个简单的 Python 站点?我应该在 .htaccess 和 .py 文件之外查看一些完全不同的范例吗?

有关的

4

6 回答 6

13

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

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

于 2009-03-10T12:35:50.293 回答
5

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

我会稍微支持 CGI。这对开发环境有好处。

连接起来很简单,您不必担心模块重新加载问题。自然性能很糟糕,但对于开发人员来说,你不在乎。

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

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

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

于 2009-03-10T14:27:20.650 回答
3

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

于 2009-03-10T12:35:41.540 回答
3

真的,这只是一个效率问题——CGI 为每个请求生成一个全新的进程,这对于它的作用来说是相当重量级的。

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

于 2009-03-10T12:38:39.117 回答
2

除了其他人提出的建议之外,您应该真正考虑使用某种框架。您可以并且应该使用FastCGI、 mod_python 或 mod_wsgi,但它们并不是真正打算让您直接编写代码。我可以建议以下之一吗?

于 2009-03-10T12:42:36.703 回答
2

Python 文档中有一个页面描述了各种可能性的优缺点

mod_python

(...) 这些就是为什么在编写新程序时应该避免使用 mod_python 的原因。

WSGI

Web 服务器网关接口或简称 WSGI 是目前 Python Web 编程的最佳方式。虽然它对编写框架的程序员来说很棒,但普通人不需要直接接触它。

FastCGI 和其他东西

如今,FastCGI 从未直接使用过。

于 2009-03-10T12:52:07.290 回答