2012-05-02 2 views
0

나는 아파치에 mod_fcgid으로 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

당신에게 확신, 당신은 None의 값을 갖는 socket 변수를 가지고 있지 않은거야? 이 샘플 :

import socket 
socket = None 
print socket.error 

정확히 동일한 오류가 발생합니다. 빠른 해킹으로 파일의 시작 부분에 import socket as socketLib을 추가하고 회신을 except socketLib.error, e으로 바꿀 수 있습니다. 문제를 확인하기 만하면됩니다.

+0

나는 'socketLib'로 가져 오기를 변경했다고 말한 것처럼했습니다. 소켓Lib : except socketLib.error, e : AttributeError : 'NoneType'객체에 'error'속성이 없습니다. – lynix