【问题标题】:Twisted execute python file扭曲执行python文件
【发布时间】:2013-04-26 03:22:20
【问题描述】:

有没有办法让扭曲的网络服务器在传统的网络服务器上执行像 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 在主文件中执行。

谢谢

【问题讨论】:

  • 您想要真正的 CGI 还是只想要用 Python 编写的易于编写脚本的资源,不符合任何特定标准?

标签: python twisted twisted.web


【解决方案1】:

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

查看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()

【讨论】:

  • 这行得通,尽管它可能不是最好的主意(你必须以 root 身份运行它才能绑定到端口 80 和 Linux,以及许多其他类似 Unix 的系统,如 FreeBSD,您将提供 /root/(“root”用户的主目录)目录。
  • 这对我有用。此解决方案的导入部分是 root.putChild("cgi-bin", twcgi.CGIDirectory("/var/www/cgi-bin")) 行。其余部分可能需要调整,您可能希望使用备用目录名称/路径。不过,这个概念是正确的。
  • 链接失效
  • @SonuMishra 修复了链接
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2011-09-11
    • 2011-07-24
    • 1970-01-01
    相关资源
    最近更新 更多