Промежуточное программное обеспечение не вызывается без сопоставления маршрутизатора.
Это может быть сделано с настраиваемым маршрутизатором
from aiohttp import web, web_urldispatcher
class Router(web.UrlDispatcher):
async def resolve(self, request):
res = await super().resolve(request)
if isinstance(res,web_urldispatcher.MatchInfoError):
if res.http_exception.status == 404:
return web_urldispatcher.MatchInfoError(
web.HTTPNotFound(
text="<html><body>custom 404</body></html>",
content_type="text/html")
)
return res
routes = web.RouteTableDef()
@routes.get('/')
async def hello(request):
return web.Response(text="Hello, world")
app = web.Application(router= Router())
app.add_routes(routes)
web.run_app(app)
Я думаю, что лучший способ - написать настраиваемое Resource
, но это не очень хорошо документированы.