mirror of
https://github.com/sprockets/sprockets-postgres.git
synced 2024-12-28 11:24:11 +00:00
Add on_postgres_error and on_postgres_timing to public API of RequestHandlerMixin
The methods are intended to be overrideable, but the leading underscore convention conflicts with Python practice. See https://docs.python.org/3.8/tutorial/classes.html#private-variables
This commit is contained in:
parent
69b806f9b3
commit
fbb7b4dd9a
2 changed files with 25 additions and 25 deletions
|
@ -602,8 +602,8 @@ class RequestHandlerMixin:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
async with self.application.postgres_connector(
|
async with self.application.postgres_connector(
|
||||||
self._on_postgres_error,
|
self.on_postgres_error,
|
||||||
self._on_postgres_timing,
|
self.on_postgres_timing,
|
||||||
timeout) as connector:
|
timeout) as connector:
|
||||||
return await connector.callproc(
|
return await connector.callproc(
|
||||||
name, parameters, metric_name, timeout=timeout)
|
name, parameters, metric_name, timeout=timeout)
|
||||||
|
@ -641,8 +641,8 @@ class RequestHandlerMixin:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
async with self.application.postgres_connector(
|
async with self.application.postgres_connector(
|
||||||
self._on_postgres_error,
|
self.on_postgres_error,
|
||||||
self._on_postgres_timing,
|
self.on_postgres_timing,
|
||||||
timeout) as connector:
|
timeout) as connector:
|
||||||
return await connector.execute(
|
return await connector.execute(
|
||||||
sql, parameters, metric_name, timeout=timeout)
|
sql, parameters, metric_name, timeout=timeout)
|
||||||
|
@ -688,15 +688,15 @@ class RequestHandlerMixin:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
async with self.application.postgres_connector(
|
async with self.application.postgres_connector(
|
||||||
self._on_postgres_error,
|
self.on_postgres_error,
|
||||||
self._on_postgres_timing,
|
self.on_postgres_timing,
|
||||||
timeout) as connector:
|
timeout) as connector:
|
||||||
async with connector.transaction():
|
async with connector.transaction():
|
||||||
yield connector
|
yield connector
|
||||||
|
|
||||||
def _on_postgres_error(self,
|
def on_postgres_error(self,
|
||||||
metric_name: str,
|
metric_name: str,
|
||||||
exc: Exception) -> typing.Optional[Exception]:
|
exc: Exception) -> typing.Optional[Exception]:
|
||||||
"""Override for different error handling behaviors
|
"""Override for different error handling behaviors
|
||||||
|
|
||||||
Return an exception if you would like for it to be raised, or swallow
|
Return an exception if you would like for it to be raised, or swallow
|
||||||
|
@ -716,9 +716,9 @@ class RequestHandlerMixin:
|
||||||
raise web.HTTPError(500, reason='Database Error')
|
raise web.HTTPError(500, reason='Database Error')
|
||||||
return exc
|
return exc
|
||||||
|
|
||||||
def _on_postgres_timing(self,
|
def on_postgres_timing(self,
|
||||||
metric_name: str,
|
metric_name: str,
|
||||||
duration: float) -> None:
|
duration: float) -> None:
|
||||||
"""Override for custom metric recording. As a default behavior it will
|
"""Override for custom metric recording. As a default behavior it will
|
||||||
attempt to detect `sprockets-influxdb
|
attempt to detect `sprockets-influxdb
|
||||||
<https://sprockets-influxdb.readthedocs.io/>`_ and
|
<https://sprockets-influxdb.readthedocs.io/>`_ and
|
||||||
|
|
26
tests.py
26
tests.py
|
@ -69,16 +69,16 @@ class ErrorRequestHandler(RequestHandler):
|
||||||
await self.postgres_execute(self.GET_SQL)
|
await self.postgres_execute(self.GET_SQL)
|
||||||
self.set_status(204)
|
self.set_status(204)
|
||||||
|
|
||||||
def _on_postgres_error(self,
|
def on_postgres_error(self,
|
||||||
metric_name: str,
|
metric_name: str,
|
||||||
exc: Exception) -> typing.Optional[Exception]:
|
exc: Exception) -> typing.Optional[Exception]:
|
||||||
return RuntimeError()
|
return RuntimeError()
|
||||||
|
|
||||||
|
|
||||||
class ErrorPassthroughRequestHandler(RequestHandler):
|
class ErrorPassthroughRequestHandler(RequestHandler):
|
||||||
|
|
||||||
async def get(self):
|
async def get(self):
|
||||||
exc = self._on_postgres_error('test', RuntimeError())
|
exc = self.on_postgres_error('test', RuntimeError())
|
||||||
if isinstance(exc, RuntimeError):
|
if isinstance(exc, RuntimeError):
|
||||||
self.set_status(204)
|
self.set_status(204)
|
||||||
else:
|
else:
|
||||||
|
@ -156,9 +156,9 @@ class MultiRowRequestHandler(RequestHandler):
|
||||||
|
|
||||||
class NoErrorRequestHandler(ErrorRequestHandler):
|
class NoErrorRequestHandler(ErrorRequestHandler):
|
||||||
|
|
||||||
def _on_postgres_error(self,
|
def on_postgres_error(self,
|
||||||
metric_name: str,
|
metric_name: str,
|
||||||
exc: Exception) -> typing.Optional[Exception]:
|
exc: Exception) -> typing.Optional[Exception]:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@ -228,9 +228,9 @@ class TimeoutErrorRequestHandler(RequestHandler):
|
||||||
await self.postgres_execute(self.GET_SQL)
|
await self.postgres_execute(self.GET_SQL)
|
||||||
raise web.HTTPError(500, 'This should have failed')
|
raise web.HTTPError(500, 'This should have failed')
|
||||||
|
|
||||||
def _on_postgres_error(self,
|
def on_postgres_error(self,
|
||||||
metric_name: str,
|
metric_name: str,
|
||||||
exc: Exception) -> typing.Optional[Exception]:
|
exc: Exception) -> typing.Optional[Exception]:
|
||||||
"""Override for different error handling behaviors
|
"""Override for different error handling behaviors
|
||||||
|
|
||||||
Return an exception if you would like for it to be raised, or swallow
|
Return an exception if you would like for it to be raised, or swallow
|
||||||
|
@ -253,9 +253,9 @@ class UnhandledExceptionRequestHandler(RequestHandler):
|
||||||
raise web.HTTPError(422)
|
raise web.HTTPError(422)
|
||||||
raise web.HTTPError(500, 'This should have failed')
|
raise web.HTTPError(500, 'This should have failed')
|
||||||
|
|
||||||
def _on_postgres_error(self,
|
def on_postgres_error(self,
|
||||||
metric_name: str,
|
metric_name: str,
|
||||||
exc: Exception) -> typing.Optional[Exception]:
|
exc: Exception) -> typing.Optional[Exception]:
|
||||||
"""Override for different error handling behaviors
|
"""Override for different error handling behaviors
|
||||||
|
|
||||||
Return an exception if you would like for it to be raised, or swallow
|
Return an exception if you would like for it to be raised, or swallow
|
||||||
|
|
Loading…
Reference in a new issue