def purge_varnish_after_commit_hook(success: bool, registry: Registry, request: IRequest): """Send PURGE requests for all changed resources to Varnish.""" varnish_url = registry.settings.get('adhocracy.varnish_url') if not (success and varnish_url): return changelog_metadata = registry.changelog.values() errcount = 0 for meta in changelog_metadata: events = extract_events_from_changelog_metadata(meta) if events == []: continue path = resource_path(meta.resource) url = varnish_url + request.script_name + path for event in events: headers = {'X-Purge-Host': request.host} headers['X-Purge-Regex'] = '/?\??[^/]*' try: resp = requests.request('PURGE', url, headers=headers) if resp.status_code != 200: logger.warning( 'Varnish responded %s to purge request for %s', resp.status_code, path) except RequestException as err: logger.error( 'Couldn\'t send purge request for %s to Varnish: %s', path, exception_to_str(err)) errcount += 1 if errcount >= 3: # pragma: no cover logger.error('Giving up on purge requests') return
def purge_varnish_after_commit_hook(success: bool, registry: Registry, request: IRequest): """Send PURGE requests for all changed resources to Varnish.""" varnish_url = registry.settings.get('adhocracy.varnish_url') if not (success and varnish_url): return changelog_metadata = registry.changelog.values() errcount = 0 for meta in changelog_metadata: events = extract_events_from_changelog_metadata(meta) if events == []: continue path = resource_path(meta.resource) url = varnish_url + request.script_name + path for event in events: headers = {'X-Purge-Host': request.host} headers['X-Purge-Regex'] = '/?\??.*$' try: resp = requests.request('PURGE', url, headers=headers) if resp.status_code != 200: logger.warning( 'Varnish responded %s to purge request for %s', resp.status_code, path) except RequestException as err: logger.error( 'Couldn\'t send purge request for %s to Varnish: %s', path, exception_to_str(err)) errcount += 1 if errcount >= 3: # pragma: no cover logger.error('Giving up on purge requests') return
def _run(self): # pragma: no cover """Start and keep alive connection to the websocket server.""" assert self._ws_url while not self._is_stopped: try: self._connect_and_receive_and_log_messages() except (WebSocketConnectionClosedException, ConnectionError, OSError) as err: logger.info('Problem connecting to Websocket server: %s', exception_to_str(err)) self._is_running = False time.sleep(1) except WebSocketException as err: # pragma: no cover logger.warning( 'Problem communicating with Websocket server: %s', exception_to_str(err)) time.sleep(1)
def _run(self): """Start and keep alive connection to the websocket server.""" assert self._ws_url while not self._is_stopped: try: self._connect_and_receive_and_log_messages() except (WebSocketConnectionClosedException, ConnectionError, OSError) as err: logger.info('Problem connecting to Websocket server: %s', exception_to_str(err)) self._is_running = False time.sleep(1) except WebSocketException as err: # pragma: no cover logger.warning( 'Problem communicating with Websocket server: %s', exception_to_str(err)) time.sleep(1)
def test_exception_to_str_index_error(): from adhocracy_core.utils import exception_to_str try: l = [] l[1] assert False except IndexError as err: err_string = exception_to_str(err) assert err_string == 'IndexError: list index out of range'
def test_exception_to_str_key_error(): from adhocracy_core.utils import exception_to_str try: d = {} d['key'] assert False except KeyError as err: err_string = exception_to_str(err) assert err_string == "KeyError: 'key'"
def stop(self): # pragma: no cover """Stop the client.""" self._is_stopped = True try: if self._is_connected(): self._close_connection(b'done') logger.debug('Websocket client closed') except WebSocketException as err: # pragma: no cover logger.warning('Error closing connection to Websocket server: %s', exception_to_str(err))
def stop(self): """Stop the client.""" self._is_stopped = True try: if self._is_connected(): self._close_connection(b'done') logger.debug('Websocket client closed') except WebSocketException as err: # pragma: no cover logger.warning('Error closing connection to Websocket server: %s', exception_to_str(err))
def handle_error_500_exception(error, request): """Return 500 JSON error.""" logger.exception('internal') description = '{}; time: {}'.format(exception_to_str(error), log_compatible_datetime()) error_entries = [error_entry('internal', '', description)] return JSONHTTPClientError(error_entries, request=request, code=500, title='Internal Server Error')
def test_exception_to_str_runtime_error(): from adhocracy_core.utils import exception_to_str err_string = exception_to_str(RuntimeError()) assert err_string == 'RuntimeError'