def __call__(self, environ, start_response): try: result = self.app(environ, start_response) if isinstance(result, list): self._cleanup_request() return result else: return self._cleanup_iterator(result) except self.flush_on_errors as exc: self._cleanup_request() raise except: ThreadLocalODMSession.close_all() ContextualODMSession.close_all(self._context_func()) raise
def _cleanup_request(self): context = self._context_func() ThreadLocalODMSession.flush_all() ContextualODMSession.flush_all(context) ThreadLocalODMSession.close_all() ContextualODMSession.close_all(context)
self._context_func = context_func or (lambda: None) def __call__(self, environ, start_response): try: result = self.app(environ, start_response) if isinstance(result, list): self._cleanup_request() return result else: return self._cleanup_iterator(result) except self.flush_on_errors, exc: self._cleanup_request() raise except: ThreadLocalODMSession.close_all() ContextualODMSession.close_all(self._context_func()) raise def _cleanup_request(self): context = self._context_func() ThreadLocalODMSession.flush_all() ContextualODMSession.flush_all(context) ThreadLocalODMSession.close_all() ContextualODMSession.close_all(context) def _cleanup_iterator(self, result): for x in result: yield x self._cleanup_request()
self._context_func = context_func or (lambda:None) def __call__(self, environ, start_response): try: result = self.app(environ, start_response) if isinstance(result, list): self._cleanup_request() return result else: return self._cleanup_iterator(result) except self.flush_on_errors, exc: self._cleanup_request() raise except: ThreadLocalODMSession.close_all() ContextualODMSession.close_all(self._context_func()) raise def _cleanup_request(self): context = self._context_func() ThreadLocalODMSession.flush_all() ContextualODMSession.flush_all(context) ThreadLocalODMSession.close_all() ContextualODMSession.close_all(context) def _cleanup_iterator(self, result): for x in result: yield x self._cleanup_request()