2012-05-02 30 views
0

我试图解决以下异常,我得到,而与mod_fcgid上运行的Apache2 Trac的0.11:蟒蛇2.6:socket.error(固定的Trac)

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我看到'套接字'是一个类,应该有一个名为'错误'的成员,为什么这个异常?

我通常编码C或Java,从来没有在Python做过什么,有人可以启发我吗? :)

感谢,

lynix

回答

0

你确定,你没有一个socket变量有None值?此示例:

import socket 
socket = None 
print socket.error 

产生完全相同的错误。作为一个快速破解,你可以尝试在你的文件的开头添加import socket as socketLib,并用except socketLib.error, e替换你的行...但只是为了确定问题!

+0

我照你说的做了,把导入改为'socketLib'。此错误现在发生在socketLib中: ,除了socketLib.error,e: AttributeError:'NoneType'对象没有属性'错误' – lynix