Попытка Python кроме не захватывает все ошибки - PullRequest
2 голосов
/ 31 марта 2012

В своем веб-приложении на фляге я использую библиотеку мензурки для обработки сеанса. В следующем коде по неизвестной причине рабочий сервер вызывает исключение, но мой локальный компьютер работает нормально.

import sys

...

try:
    beaker_session = request.environ['beaker.session']
    beaker_session['user_id'] = user.id 
    beaker_session.save()
except:
    flash(sys.exc_info()[0])
    return render_template('main/login.html')

Локальный компьютер сохраняет сеанс так, как и ожидалось, без каких-либо исключений. Рабочий сервер (RedHat OpenShift) выдает ошибку именно в строке "beaker_session.save ()". Но вместо того, чтобы показывать мою страницу входа с флэш-сообщением, выдается внутренняя ошибка сервера 500. Я проверил URL-адрес beaker backend (mysql db) и проблем нет, потому что он работает в других частях кода, где я сохраняю новых зарегистрированных пользователей. Итак, мой вопрос: 1) почему кроме части не работает? 2) почему стакан не может сохранить сессию. Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 января 2013

По умолчанию Flask проглатывает исключения, обязательно добавьте эту строку в ваше приложение в верхней части:

app.config ['PROPAGATE_EXCEPTIONS'] = True

0 голосов
/ 31 марта 2012

Я не знаком с библиотекой beaker, но если это SWIG-библиотека и происходит исключение в коде C ++, возможно, разработчик забыл отобразить исключение в соответствующее исключение Python. Если это так, то Python не может получить исключение - и даже попытка / исключение пропустит его.

...