当我试图运行WSGI Python脚本来测试来自此tutorial的FastCGI时:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from cgi import escape
import sys, os
from flup.server.fcgi import WSGIServer
def app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
yield '<h1>FastCGI Environment</h1>'
yield '<table>'
for k, v in sorted(environ.items()):
yield '<tr><th>%s</th><td>%s</td></tr>' % (escape(k), escape(v))
yield '</table>'
WSGIServer(app).run()
导致跟踪,从错误日志中找不到基于返回的应用程序状态0出错的地方。可能是我遗漏了一些东西。
Mod_python error: "PythonHandler mod_python.publisher"
Traceback (most recent call last):
File "/usr/local/lib64/python2.7/site-packages/mod_python/apache.py", line 398, in HandlerDispatch
result = obj(req)
File "/usr/local/lib64/python2.7/site-packages/mod_python/publisher.py", line 213, in handler
module = page_cache[req]
File "/usr/local/lib64/python2.7/site-packages/mod_python/cache.py", line 89, in __getitem__
return self._checkitem(name)[2]
File "/usr/local/lib64/python2.7/site-packages/mod_python/cache.py", line 131, in _checkitem
value = self.build(key, name, opened, entry)
File "/usr/local/lib64/python2.7/site-packages/mod_python/publisher.py", line 86, in build
return ModuleCache.build(self, key, req, opened, entry)
File "/usr/local/lib64/python2.7/site-packages/mod_python/cache.py", line 380, in build
exec(opened_as_str, module.__dict__)
File "<string>", line 21, in <module>
File "/usr/local/lib/python2.7/site-packages/flup/server/fcgi.py", line 112, in run
sock = self._setupSocket()
File "/usr/local/lib/python2.7/site-packages/flup/server/fcgi_base.py", line 997, in _setupSocket
req.run()
File "/usr/local/lib/python2.7/site-packages/flup/server/fcgi_base.py", line 572, in run
self._end(appStatus, protocolStatus)
File "/usr/local/lib/python2.7/site-packages/flup/server/fcgi_base.py", line 601, in _end
sys.exit(appStatus)
SystemExit: 0
提示可能只有在我通过Apache运行时才会发生。在命令行中它工作正常。
答案 0 :(得分:1)
看起来您正在尝试通过FCGI运行WSGI应用程序,但使用mod_python。如果必须使用FCGI,则需要使用mod_fastcgi。但是,实际上你应该自己使用mod_wsgi而不使用它或者使用。