用于测试FastCGI的WSGI Python适配器:启动WSGI服务器时出错

时间:2015-10-06 11:20:23

标签: apache mod-wsgi fastcgi httpd.conf mod-python

当我试图运行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运行时才会发生。在命令行中它工作正常。

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试通过FCGI运行WSGI应用程序,但使用mod_python。如果必须使用FCGI,则需要使用mod_fastcgi。但是,实际上你应该自己使用mod_wsgi而不使用它或者使用。