0

Apache2 で mod_fcgid を使用して Trac 0.11 を実行しているときに発生する次の例外を修正しようとしています:

Unhandled exception in thread started by <bound method Connection.run of <trac.web._fcgi.Connection object at 0x88b5fec>>
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/trac/web/_fcgi.py", line 661, in run
    except socket.error, e:
AttributeError: 'NoneType' object has no attribute 'error'

_fcgi.py の関連するブロックを次のようにロックするように変更しました。

def run(self):
    """Begin processing data from the socket."""
    self._keepGoing = True
    while self._keepGoing:
        try:
            self.process_input()
        except EOFError:
            break
        except socket.error, e:
            if e[0] == errno.EBADF:
                break
            raise
        except select.error, e:
            if e[0] == errno.EBADF: # Socket was closed by Request.
                break
            raise

    self._cleanupSocket()

例外の原因となっている行はexcept socket.error, e:. Pydocs を読むと、「socket」はクラスであり、「error」という名前のメンバーが存在するはずですが、なぜこの例外が発生するのでしょうか?

私は通常、C または Java をコーディングしていて、Python で何かをしたことがありません。誰かが私を啓発できますか? :)

ありがとう、

オオヤマネコ

4

1 に答える 1

0

socketの値を持つ変数がありませんNoneか? このサンプル:

import socket
socket = None
print socket.error

まったく同じエラーが発生します。簡単なハックとして、import socket as socketLibファイルの先頭に追加して、行を ... に置き換えることができexcept socketLib.error, eますが、問題を特定するだけです!

于 2012-05-02T21:43:23.143 に答える