2013-06-08 5 views
1

이상한 문제. 에 python manage.py runserver 정상적으로 manage.py runserver에 대한 추적이 없습니다.

  • 80 :에 아파치/WSGI를 통해

    1. : 나는 두 가지 방법으로 실행 장고 사이트가 WSGI 모든 것을 통해

    을 테스트 할 때 8000은 잘 작동하지만 사용 runserver, 오류 페이지 (debug = True)가 표시되면 페이지가 중간에로드 된 다음 추적을 표시하지 않고 영원히로드됩니다. '중간'로드에 대한

    일부 노트 :

      다른 오류에 대해 동일한 오류
    • 에 대해 정확히 같은 지점에로드 할 것
    • , 그것은 것입니다 다른 지점 (다른 부분을 모두 Firebug에 따른 다른 파일 크기)
    • 다른 브라우저의 경우 다른 지점으로로드됩니다 (페이지가 다시로드되는 경우 일관되게 동일한 지점으로로드됩니다).
    • 예 : 이제 'local vars'에서 추적 백시의 첫 번째 단계로로드되는 ValueError가 있습니다 (request이로드 됨). Firefox에서는 지속적으로 최대 SSH_CONNECTION을로드하는 반면 Chrome에서는 최대 SHELL까지로드합니다 (Firefox에서는로드가 잘됩니다).
    • 서버를 다시 시작해도 아무런 효과가 없습니다.

    일반 (오류가없는) 페이지는 정상적으로로드됩니다. 콘솔에는 특별한 코드 500이 표시되지 않습니다.

  • +2

    'runserver'가 실행중인 콘솔에 아무 것도 출력되지 않습니까? – kirelagin

    +0

    (보통) 코드 500으로 요청을 표시하지만 오류는 표시하지 않습니다. – Mark

    +0

    로컬 서버에서'curl' 또는'wget'을 시도 했습니까? 더 유익한 오류 메시지가 표시 될 수 있습니다. 또한 Chrome의 '요소 검사'옵션을 사용하여 네트워크 트래픽을 확인하세요. –

    답변

    1

    코드 어딘가에 pdb.set_trace()이있는 것 같습니다. 나는 __unicode__ 메쏘드 또는 오류 페이지의 렌더링 동안 호출되는 것을 추측 할 것이다. 이것은 dev 서버의 출력이 버퍼링된다는 개념에 근거합니다.

    가능성이 매우 높습니다 (어쩌면 앞에서 설명한 set_trace 상황과 비슷한 곳에서) 반복적으로 재귀 호출을 수행 할 수 있지만 재귀 기능은 얼마되지 않아서 RuntimeError: maximum recursion depth exceeded 오류. 예를 들어

    :

    import time 
    
    def foo(): 
        time.sleep(.2) 
        bar() 
    
    def bar(): 
        foo() 
    
    bar() 
    

    그것은 당신이 목적에 그것을하지 않으면 그냥 걸어 파이썬 프로그램을 만들기 위해, 그렇지 않으면 꽤 어렵다.

    +0

    답변 해 주셔서 감사합니다. 그것은 의미가 있지만, 나는'set_trace'를 아무 데서도 사용하지 않았다는 것을 두려워합니다. (사실 지금까지는 그 존재를 알지 못했습니다.) – Mark

    +0

    @ 마크 - 문제 없습니다. 방금 그 대답에 또 다른 가능성을 더했습니다. – orokusaki

    1

    이 해결 방법은 "장고 - 확장"과 werkezeug를 설치하고 manage.py runserver_plus으로 서버를 시작하는 것입니다 https://code.djangoproject.com/ticket/15132

    를 참조하십시오. 이 향상된 개발 서버는 기본적으로 다른 세부 사항들 사이에 추적 표시를 보여줍니다.