import json
import typing
import uvicorn
from asyncpg.pgproto.pgproto import UUID
from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette.requests import Request
from starlette.routing import Route
from starception import StarceptionMiddleware
class WithHintError(Exception):
solution = (
'The connection to the database cannot be established. '
'Either the database server is down or connection credentials are invalid.'
)
def index_view(request: Request) -> typing.NoReturn:
uuid_dict = {"id": UUID('a4ccb480-e020-4f90-8951-ff859f731b40') }
json.dumps(uuid_dict)
def hint_view(request: Request) -> typing.NoReturn:
raise WithHintError('Oops, something really went wrong...')
app = Starlette(
debug=True,
routes=[Route('/', index_view), Route('/hint', hint_view)],
middleware=[Middleware(StarceptionMiddleware)],
)
if __name__ == '__main__':
uvicorn.run("starlette_app:app")
minmal reproducible example below