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:
Andrew Rabert 2020-09-16 17:28:19 -04:00
parent 69b806f9b3
commit fbb7b4dd9a
2 changed files with 25 additions and 25 deletions

View file

@ -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

View file

@ -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