mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
feat(python): catch all exceptions thrown through fastapi route paths
This commit does quite a bit: - Catches unhandled exceptions raised in the route handler and produces a 500 Internal Server Error Arch-themed response. - Each unhandled exception causes a notification to be sent to new `notifications.postmaster` email with a "Traceback ID." - Traceback ID is logged to the server along with the traceback which caused the 500: `docker-compose logs fastapi | grep '<traceback_id>'` - If `options.traceback` is set to `1`, traceback is displayed in the new 500.html template. Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
parent
c775e8a692
commit
d675c0dc26
10 changed files with 230 additions and 14 deletions
|
@ -1,12 +1,11 @@
|
|||
import hashlib
|
||||
|
||||
from datetime import datetime
|
||||
from http import HTTPStatus
|
||||
from typing import List, Set
|
||||
|
||||
import bcrypt
|
||||
|
||||
from fastapi import HTTPException, Request
|
||||
from fastapi import Request
|
||||
from sqlalchemy import or_
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.orm import backref, relationship
|
||||
|
@ -142,11 +141,7 @@ class User(Base):
|
|||
exc = exc_
|
||||
|
||||
if exc:
|
||||
detail = ("Unable to generate a unique session ID in "
|
||||
f"{tries} iterations.")
|
||||
logger.error(str(exc))
|
||||
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
|
||||
detail=detail)
|
||||
raise exc
|
||||
|
||||
return self.session.SessionID
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue