def handle_exception(cls, meta, collection_id, exception): if isinstance(exception, SQLAlchemyError): log.exception(exception) return (error_type, error_message, error_details) = sys.exc_info() if error_type is not None: error_message = unicode(error_message) error_details = traceback.format_exc() log.info(error_details) else: error_message = unicode(exception) error_type = exception.__class__.__name__ log.warn('Error [%s]: %s', error_type, error_message) try: db.session.rollback() db.session.close() document = Document.by_meta(collection_id, meta) document.type = Document.TYPE_OTHER document.status = Document.STATUS_FAIL document.error_type = error_type document.error_message = error_message document.error_details = error_details db.session.add(document) db.session.commit() index_document(document) except Exception as ex: log.exception(ex)
def create_document(self, meta, type=None): document = Document.by_meta(self.collection_id, meta) document.status = Document.STATUS_SUCCESS document.type = type or self.DOCUMENT_TYPE db.session.add(document) db.session.flush() return document