def put(self, data): if data is None: return key = self.__get_pks_str_by_data(data) logger.LOG_DEBUG('put key:%s', key) logger.LOG_DEBUG('put data:%s', str(data)) import time logger.LOG_DEBUG('time now:%d', time.time()) self._cache.set(key, (data, int(time.time())))
def delete(self, data): if data is None: return key = self.__get_pks_str_by_data(data) logger.LOG_DEBUG('delete key:%s', key) self._cache.pop(key)
def commit(db): assert db try: yield db db.commit() logger.LOG_DEBUG("数据库连接[{id}]已经提交.".format(id=id(db))) except: db.rollback() logger.LOG_TRACE("数据库连接[{id}]已经回滚.".format(id=id(db))) raise
def find_one(self, **pks): cache_data = None try: cache_data = self.cache_table.get(**pks) except Exception as e: logger.LOG_WARNING('读取缓存数据时异常:%s', str(e)) if cache_data is not None: logger.LOG_DEBUG('find data in[%s]:%s', self.cache_table._name, str(cache_data)) return cache_data db_data = self._db_dao.find_one(**pks) self.cache_table.put(db_data) return db_data
def get(self, **pks): pks_str = self.__get_pks_str(**pks) logger.LOG_DEBUG('pks_str:%s cache name:%s', pks_str, self._name) item = self._cache.get(pks_str) if item is None: logger.LOG_DEBUG('no data found.') return None data, stamp = item logger.LOG_DEBUG('find data:%s', str(data)) logger.LOG_DEBUG('timestamp:%d', stamp) import time to_now_sec = int(time.time()) - int(stamp) # to_sec logger.LOG_DEBUG('to_now_sec:%d', to_now_sec) if to_now_sec > self._duration: logger.LOG_DEBUG('data expired.') return None return data
def __getattr__(self, name): """这个方法在访问的attribute不存在的时候被调用 the __getattr__() method is actually a fallback method that only gets called when an attribute is not found""" logger.LOG_DEBUG('CacheDao中没有改属性:%s', name) return getattr(self._db_dao, name)