middleware.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:irisett 作者: beebyte 项目源码 文件源码
def error_handler_middleware_factory(app: web.Application, handler: Any) -> Callable:
    """Error handling middle.

    Catch errors raised in web views and try to return a corresponding
    HTTP error code.
    """
    async def middleware_handler(request: web.Request) -> web.Response:
        errcode = None
        errmsg = None
        ret = None
        try:
            ret = await handler(request)
        except errors.NotFound as e:
            errcode = 404
            errmsg = str(e) or 'not found'
        except errors.PermissionDenied as e:
            errcode = 401
            errmsg = str(e) or 'permission denied'
        except errors.InvalidData as e:
            errcode = 400
            errmsg = str(e) or 'invalid data'
        except errors.WebAPIError as e:
            errcode = 400
            errmsg = str(e) or 'api error'
        except IrisettError as e:
            errcode = 400
            errmsg = str(e) or 'irisett error'
        if errcode:
            log.msg('Request returning error(%d/%s): %s' % (errcode, errmsg, request), 'WEBAPI')
            ret = web.Response(status=errcode, text=errmsg)
        return ret

    return middleware_handler
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号