prozorro_sale.tools.errors module¶
Package to provide a middleware for catch error Exception.
- async prozorro_sale.tools.errors.aiohttp_change_response(msg, status_code, request=None)[source]
Method for change response if error was occurred.
- Parameters
msg – error message
status_code – response status code
request (object) – Request
- Returns
Response object.
- Return type
aiohttp.web.Response
- prozorro_sale.tools.errors.catch_error_middleware(errors: dict = None, response_constructor: Optional[Coroutine] = None) Callable[[aiohttp.web_request.Request, Callable[[Request], Awaitable[StreamResponse]]], Awaitable[aiohttp.web_response.StreamResponse]] [source]
Middleware to handle unique exceptions from handlers.
- Parameters
errors (
dict
, optional) – Custom application exception dictionaryresponse_constructor (
coroutine
, optional) – Coroutine for make Response
- Returns
aiohttp Middleware
Example
>>> from prozorro_sale.tools.errors import catch_error_middleware ... ... ... ERRORS = { ... KeyError: 400, ... AttributeError: 200, ... ValueError: (403, 'Forbidden. {}'), ... Exception: (500, '{}') ... } ... ... async def response_constructor(msg, status_code, request=None): ... return web.json_response({'message': msg}, status=status_code) ... ... app = web.Application(middlewares=[catch_error_middleware(ERRORS, response_constructor),])
- prozorro_sale.tools.errors.expects(errors: Optional[dict] = None, response_constructor: Optional[Coroutine] = None, catch_all: bool = False)[source]
Decorator to handle unique exceptions from handlers.
- Parameters
errors (dict) – Custom application exception dictionary
response_constructor (coroutine) – Coroutine for make Response
catch_all (bool) – catch all exceptions
Example
>>> @expects({ ... SomeException: 404, ... SomeAnotherException: (403, 'Forbidden. {}') ... }) ... def handler(request): ... pass