1

有没有办法让一个扭曲的网络服务器在传统的网络服务器上执行像 cgi 这样的 python 文件?那么,当我导航到一个目录时,我可以在一个单独的文件中执行 python 吗?

我创建了一个基本的网络服务器,但它只返回文本或 HTML 文件等静态内容:

from twisted.web.server import Site
from twisted.web.static import File
from twisted.internet import reactor

resource = File('/root')
factory = Site(resource)
reactor.listenTCP(80, factory)
reactor.run()

我理解为什么它可能不可能,但我找不到任何文档。谢谢

编辑:我找到了解决方案。我没有经历目录的麻烦,而是简单地解析 GET 请求并将它们视为假文件。CGI 在主文件中执行。

谢谢

4

2 回答 2

2

发现这个例子可能会做你想做的事。

查看Twisted Web Docs了解更多信息。在页面中搜索 CGI。

from twisted.internet import reactor
from twisted.web import static, server, twcgi

root = static.File("/root")
root.putChild("cgi-bin", twcgi.CGIDirectory("/var/www/cgi-bin"))
reactor.listenTCP(80, server.Site(root))
reactor.run()
于 2013-04-26T03:26:05.577 回答
0

您通常会为此使用 Twisted WSGI 服务器。

http://twistedmatrix.com/documents/12.3.0/web/howto/web-in-60/wsgi.html

它并不完全执行 Python 文件,而是调用“应用程序”。但这更好,因为它不必启动新的 Python 进程。

您也可以使用twisted CGI 支持,它将执行文件,但是使用Twisted 使用CGI 运行Python 脚本有点像将跑车用作拖拉机。

于 2013-04-26T03:27:16.243 回答