使用Python和Flup在FCGI和CGI之间切换

使用Python和Flup在FCGI和CGI之间切换,python,cgi,fastcgi,flup,Python,Cgi,Fastcgi,Flup,我目前正在使用Flup()将所有Python CGI脚本移动到WSGI标准,我创建了一个dispatch.fcgi文件,调用并使用Flup,如文档中所述: from flup.server.fcgi import WSGIServer ... 工作起来很有魅力,当我尝试切换到CGI以非缓存模式调试某些东西时,问题就出现了,避免杀死进程或触摸文件,这应该很简单,只要更换Flup服务器导入即可: from flup.server.cgi import WSGIServer ... 但随后浏览器返

我目前正在使用Flup()将所有Python CGI脚本移动到WSGI标准,我创建了一个dispatch.fcgi文件,调用并使用Flup,如文档中所述:

from flup.server.fcgi import WSGIServer
...
工作起来很有魅力,当我尝试切换到CGI以非缓存模式调试某些东西时,问题就出现了,避免杀死进程或触摸文件,这应该很简单,只要更换Flup服务器导入即可:

from flup.server.cgi import WSGIServer
...
但随后浏览器返回500错误,我检查了通过SSH执行的标题和html,似乎没有问题,然后我认为应该是一些服务器配置错误(Dreamhost shared),我发现服务器无法执行扩展名为.fcgi的Python脚本,所以我找到了一个解决方法,将其添加到.htaccess文件中:

AddHandler cgi-script .fcgi
然后,CGI模式几乎可以工作(wsgi.input总是空的,甚至可以通过适当的方式读取长度),但FCGI缓存根本不起作用,启动了很多进程。现在我完全陷入僵局,我只想用一种简单的方法从FCGI切换到CGI,这个方法有效吗?或者我错过了什么


非常感谢

FCGI协议不同于CGI。这就是为什么将Apache.FCGI文件处理程序更改为CGI处理程序时,从FCGI到CGI的简单更改不起作用,FCGI也不起作用。

我知道有不同的协议,但在WSGI下,两者都应该以相同的方式工作,至少我理解这是WSGI的基本原理,将所有协议统一到同一个包装器下。如果Flup无法处理CGI,为什么Flup的CGI模块是?有很多人以这种方式使用它…理论上,脚本应该在您的操作后在CGI模式下工作。为什么不呢,我不知道,但我的回答是,你不能期望所有的fcgi脚本都能像cgi一样工作,反之亦然。不可能有简单的切换方法,至少你正在尝试的方法是不可能的。