2015-07-06 2 views
0

Обычно я могу видеть трассировки Python в окне «запуска» Pycharm. Тем не менее, у меня есть проект, где я не получаю Python tracebacks отображается в окне «Выполнить» для ошибки внутреннего сервера (см):Python tracebacks не отображается для ошибки, приводящей к ошибке 500 Server

> /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 
> /Users/noname/PycharmProjects/usc/main.py * Running on 
> http://127.0.0.1:5000/ (Press CTRL+C to quit) 
> 127.0.0.1 - - [06/Jul/2015 15:23:42] "GET/HTTP/1.1" 200 - 
> 127.0.0.1 - - [06/Jul/2015 15:23:43] "GET /estimator HTTP/1.1" 200 - 
> 127.0.0.1 - - [06/Jul/2015 15:23:44] "GET /estimator/errorform HTTP/1.1" 500 - 

Первоначально я думал, что я должен быть случайно изменены некоторые настройки по умолчанию и потерянные трассировки полностью. Однако позже я понял, что все еще получаю трассировки в окне «Run», если я ввожу какую-то произвольную ошибку в код.

Проблема заключается в том, что я знаю, что ошибка 500 Server вызвана одной из моих инструкций Python, поскольку я могу получить ошибку, если я изменю инструкцию, описанную ниже. Я в замешательстве, почему я получаю 500 Server Error, но не любые трассировки Python.

Соответствующий фрагмент кода ниже:

@app.route('/estimator/errorform', methods=['GET', 'POST']) 
def errorform(): 
    form = ErrorForm() 
    line = str(open("logs.txt", "r").readlines()[int(file_len("logs.txt"))]).rstrip() 
    #Server Error disappears if I replace [int(file_len("logs.txt"))] with 1, above 
    if form.validate_on_submit(): 
     webbrowser.open('mailto:[email protected]?subject=Feedback&body= 
     <insert your message here>. \n\n Logs: %s' % (line)) 
    return render_template('main.html', form=form, show_results=0,page='errorform') 
+0

Таким образом, я установил, что ошибка была вызвана попыткой прочитать прошлое EOF, так как в моей функции file_len произошла ошибка. Мне все еще интересно, почему это не бросало никаких следов. Я закончил тем, что потратил 1 час, чтобы отладить что-то, что должно было на самом деле заняло меня всего 5 минут. – zanzu

ответ

4

Попробуйте установить debug = True к вашему Колба приложение:

app = Flask(__name__) 
app.debug = True 

См Flask documentation.

+0

Спасибо! Так оно и было. – zanzu