문제

Libcurl을 사용하여 웹 페이지를 DL로 사용하고 데이터를 위해 스캔하고 링크 중 하나로 무언가를 수행하고 있습니다. 그러나 가끔 페이지가 다릅니다. 따라서 나쁜 데이터를 추출하고 pycurl은 예외를 던집니다. 나는 pycurl의 예외 이름을 찾아 보았지만 운이 없었습니다.

트레이스 백을 얻을 수있는 방법이 있습니까? 함수를 실행하여 파일을 덤프하여 파일 입력을 볼 수 있고 내 코드가 잘못되었는지 확인할 수 있습니까?

도움이 되었습니까?

해결책

Sys.ExcepThook 글로벌 예외 핸들러를 설정할 수있는 곳에서 도와 드릴 수 있습니다. Pycurl 예외가 어떻게 처리되는지 잘 모르겠습니다. 바인딩 라이브러리이지만 일반 기능으로 재 할당하는 것이 좋습니다. 같은 것 :

>>> import sys
>>> 
>>> def my_global_exception_handler(type, value, traceback):
...     print traceback
...     sys.exit()
... 
>>> sys.excepthook = my_global_exception_handler
>>> raise
<traceback object at 0xb7cfcaa4>

이 예외 후크 기능은 덤프가 필요한 파일에 액세스 할 수있는 인스턴스 메소드 일 수 있습니다.

다른 팁

일반적인 예외 핸들러를 사용할 수 있습니다.

logging.basicConfig( file="someFile.log", level=logging.DEBUG )
logger= logging.getLogger( __name__ )
try:
    curl = pycurl.Curl()
    curl.setopt(pycurl.URL, url)
    # etc.
    curl.perform()
    curl.close
    logger.info( "Read %s", url )
except Exception, e:
    logger.exception( e )
    print e, repr(e), e.message, e.args
    raise
logging.shutdown()

이것은 당신이 찾고있는 예외 정보가있는 멋진 로그를 작성합니다.

메인 블록 어딘가에 모든 예외를 포착하고 콜백 정보에 sys.exc_info ()를 사용하고 파일에 로그인 할 수 있습니까? exc_info ()는 예외 유형뿐만 아니라 추적을 호출하여 무엇이 잘못되었는지 정보를 제공해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top