扭曲执行python文件

扭曲执行python文件,python,twisted,twisted.web,Python,Twisted,Twisted.web,有没有办法让twisted Web服务器在传统Web服务器上执行类似cgi的python文件?所以,当我导航到一个目录时,我可以在一个单独的文件中执行python 我创建了一个基本Web服务器,但它只返回静态内容,如文本或HTML文件: from twisted.web.server import Site from twisted.web.static import File from twisted.internet import reactor resource = File('/roo

有没有办法让twisted Web服务器在传统Web服务器上执行类似cgi的python文件?所以,当我导航到一个目录时,我可以在一个单独的文件中执行python

我创建了一个基本Web服务器,但它只返回静态内容,如文本或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

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

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

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


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

这是可行的,尽管这可能不是最好的主意(您必须以root用户身份运行它才能绑定到端口80,在Linux和许多其他类似Unix的系统上,如FreeBSD,您将提供/root/“root”用户的home)目录。这对我很有用。此解决方案的导入部分是root.putChild(“cgi-bin”,twcgi.CGIDirectory(“/var/www/cgi-bin”))行。它的其余部分可能需要调整,并且您可能希望使用备用目录名/路径。不过这个概念非常正确。链接是broken@SonuMishra修复了链接您想要实际的CGI还是只想要用Python编写的易于编写脚本的资源,而不符合任何特定标准?