Merge pull request #6 from nvllsvm/override

Add on_postgres_error and on_postgres_timing to public API of RequestHanderMixin
This commit is contained in:
Gavin M. Roy 2020-09-16 19:28:21 -04:00 committed by GitHub
commit e63396be2c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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