У меня есть веб-приложение на python Pyramid, которое вызывает другой код на python, что может вызвать исключение. Вместо того, чтобы пользователь получал «Внутреннюю ошибку 500», я бы хотел, чтобы он получал более конкретную ошибку, например, если выдается MyException, отображается ошибка 503. Я пытался сделать это:
@view_config(context=MyException, permission='view')
def custom_exc(exc, request):
raise HTTPServiceUnavailable(exc.message)
Однако это не удается, потому что по какой-то причине это неавторизовано:
HTTPForbidden: Unauthorized: custom_exc failed permission check
Мой ACL выглядит следующим образом:
class RootFactory(object):
__acl__ = [
(Allow, 'admin', ('view',))
]
Я подключен к пользователю admin, и он отлично работает для других представлений.
Кто-нибудь знает, как решить эту проблему или как по-другому «сцепить» исключения в Pyramid?