ฉันมีเว็บแอปใน 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',))
]
ฉันเชื่อมต่อกับผู้ใช้ ผู้ดูแลระบบ และทำงานได้อย่างสมบูรณ์แบบสำหรับมุมมองอื่น
ไม่มีใครรู้วิธีการแก้ปัญหานี้หรือวิธี "เชื่อมโยง" ข้อยกเว้นในพีระมิดด้วยวิธีอื่นหรือไม่