def __setitem__(self, key, value): # @ReservedAssignment if trace_queries: logger.debug('W %s' % str(key)) self.check_existence() filename = self.filename_for_key(key) dirname = os.path.dirname(filename) if not os.path.exists(dirname): os.makedirs(dirname) protocol = pickle.HIGHEST_PROTOCOL try: paranoid = False if paranoid: safe_pickle_dump(value, filename, protocol) else: with open(filename, 'wb') as f: pickle.dump(value, f, protocol) except Exception as e: msg = ('Cannot set key %s: cannot pickle object ' 'of class %s: %s' % (key, value.__class__.__name__, e)) logger.error(msg) logger.exception(e) emsg = find_pickling_error(value) logger.error(emsg) raise SerializationError(msg + '\n' + emsg)
def __setitem__(self, key, value): # @ReservedAssignment if trace_queries: logger.debug('W %s' % str(key)) self.check_existence() filename = self.filename_for_key(key) protocol = pickle.HIGHEST_PROTOCOL try: # paranoid = False # if paranoid or self.compress: # safe_pickle_dump can take care of .gz safe_pickle_dump(value, filename, protocol) # else: # if False: # f = open(filename, 'wb', buffering=-1) # pickle.dump(value, f, protocol) # else: # with open(filename, 'wb', buffering=-1) as f: # pickle.dump(value, f, protocol) except Exception as e: msg = ('Cannot set key %s: cannot pickle object ' 'of class %s: %s' % (key, value.__class__.__name__, e)) logger.error(msg) logger.exception(e) emsg = find_pickling_error(value) logger.error(emsg) raise SerializationError(msg + '\n' + emsg)
def safe_pickle_dump(value, filename, protocol=pickle.HIGHEST_PROTOCOL, **safe_write_options): with safe_write(filename, **safe_write_options) as f: try: pickle.dump(value, f, protocol) except Exception: msg = 'Cannot pickle object of class %s' % describe_type(value) logger.error(msg) msg = find_pickling_error(value, protocol) logger.error(msg) raise
def safe_pickle_dump(value, filename, protocol=pickle.HIGHEST_PROTOCOL, **safe_write_options): with safe_write(filename, **safe_write_options) as f: try: pickle.dump(value, f, protocol) except KeyboardInterrupt: raise except Exception: msg = 'Cannot pickle object of class %s' % describe_type(value) logger.error(msg) msg = find_pickling_error(value, protocol) logger.error(msg) raise
def publish(context, event_name, **kwargs): """ Publishes an event. Checks that it is registered and with the right attributes. Then it is passed to broadcast_event(). """ if event_name not in compmake_registered_events: msg = 'Event %r not registered' % event_name logger.error(msg) raise CompmakeException(msg) spec = compmake_registered_events[event_name] for key in kwargs.keys(): if key not in spec.attrs: msg = ('Passed attribute %r for event type %r but only found ' 'attributes %s.' % (key, event_name, spec.attrs)) logger.error(msg) raise CompmakeException(msg) event = Event(event_name, **kwargs) broadcast_event(context, event)
def publish(context, event_name, **kwargs): """ Publishes an event. Checks that it is registered and with the right attributes. Then it is passed to broadcast_event(). """ if not event_name in compmake_registered_events: msg = 'Event %r not registered' % event_name logger.error(msg) raise CompmakeException(msg) spec = compmake_registered_events[event_name] for key in kwargs.keys(): if not key in spec.attrs: msg = ('Passed attribute %r for event type %r but only found ' 'attributes %s.' % (key, event_name, spec.attrs)) logger.error(msg) raise CompmakeException(msg) event = Event(event_name, **kwargs) broadcast_event(context, event)
def __getitem__(self, key): if trace_queries: logger.debug('R %s' % str(key)) self.check_existence() filename = self.filename_for_key(key) if not os.path.exists(filename): raise CompmakeException('Could not find key %r.' % key) try: return safe_pickle_load(filename) except Exception as e: msg = "Could not unpickle file %r." % (filename) logger.error(msg) logger.exception(e) msg += "\n" + traceback.format_exc(e) raise CompmakeException(msg)
def __setitem__(self, key, value): # @ReservedAssignment if trace_queries: logger.debug('W %s' % str(key)) self.check_existence() filename = self.filename_for_key(key) try: safe_pickle_dump(value, filename) assert os.path.exists(filename) except BaseException as e: msg = ('Cannot set key %s: cannot pickle object ' 'of class %s: %s' % (key, value.__class__.__name__, e)) logger.error(msg) logger.exception(e) emsg = find_pickling_error(value) logger.error(emsg) raise SerializationError(msg + '\n' + emsg)
def __setitem__(self, key, value): # @ReservedAssignment if trace_queries: logger.debug('W %s' % str(key)) self.check_existence() filename = self.filename_for_key(key) try: safe_pickle_dump(value, filename) assert os.path.exists(filename) except KeyboardInterrupt: raise except BaseException as e: msg = ('Cannot set key %s: cannot pickle object ' 'of class %s: %s' % (key, value.__class__.__name__, e)) logger.error(msg) logger.exception(e) emsg = find_pickling_error(value) logger.error(emsg) raise SerializationError(msg + '\n' + emsg)
def __getitem__(self, key): if trace_queries: logger.debug('R %s' % str(key)) self.check_existence() filename = self.filename_for_key(key) if not os.path.exists(filename): msg = 'Could not find key %r.' % key msg += '\n file: %s' % filename raise CompmakeBug(msg) try: return safe_pickle_load(filename) except Exception as e: msg = ("Could not unpickle data for key %r. \n file: %s" % (key, filename)) logger.error(msg) logger.exception(e) msg += "\n" + traceback.format_exc() raise CompmakeBug(msg)