89 lines
2.0 KiB
Python
89 lines
2.0 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: UTF-8 -*-
|
||
|
|
||
|
import sys
|
||
|
import time
|
||
|
sys.path.append('../..')
|
||
|
|
||
|
import caching
|
||
|
import report
|
||
|
|
||
|
|
||
|
report.stdoutLoggingConfigure(log_name_lvl=[('root', 'DEBUG'), ])
|
||
|
|
||
|
|
||
|
class test_slow_data(object):
|
||
|
_ONE = '1'
|
||
|
_TWO = '2'
|
||
|
_THREE = '_property_cache_data_version_'
|
||
|
_FOUR = '_property_cache_uid_'
|
||
|
_FIVE = '__property_cache_uid_'
|
||
|
KEYS = [_ONE, _TWO, _THREE, _FOUR, _FIVE]
|
||
|
VERS = 0.1
|
||
|
|
||
|
def data_version(self):
|
||
|
return self.VERS
|
||
|
|
||
|
def one(self):
|
||
|
return self.get(self._ONE)
|
||
|
|
||
|
def two(self):
|
||
|
return self.get(self._TWO)
|
||
|
|
||
|
def three(self):
|
||
|
return self.get(self._THREE)
|
||
|
|
||
|
def four(self):
|
||
|
return self.get(self._FOUR)
|
||
|
|
||
|
def five(self):
|
||
|
return self.get(self._FIVE)
|
||
|
|
||
|
def get(self, key, default=None):
|
||
|
def print_n_sleep(k):
|
||
|
sys.stdout.write('slow get executed for %s\n' % k)
|
||
|
time.sleep(3)
|
||
|
if key == self._ONE:
|
||
|
print_n_sleep(key)
|
||
|
return 'one'
|
||
|
if key == self._TWO:
|
||
|
print_n_sleep(key)
|
||
|
return 'two'
|
||
|
if key == self._THREE:
|
||
|
print_n_sleep(key)
|
||
|
return 'three'
|
||
|
if key == self._FOUR:
|
||
|
print_n_sleep(key)
|
||
|
return 'four'
|
||
|
if key == self._FIVE:
|
||
|
print_n_sleep(key)
|
||
|
return 'five'
|
||
|
return default
|
||
|
|
||
|
def keys(self):
|
||
|
return self.KEYS
|
||
|
|
||
|
def uid(self):
|
||
|
return None
|
||
|
|
||
|
|
||
|
class tsd_cache_pickle(test_slow_data):
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
test_slow_data.__init__(self, *args, **kwargs)
|
||
|
self._cached_data = caching.property_cache_pickle(test_slow_data(*args, **kwargs), 'cache.pickle', load_all_on_init=False)
|
||
|
|
||
|
def two(self):
|
||
|
return test_slow_data.get(self, self._TWO)
|
||
|
|
||
|
def get(self, key, default=None):
|
||
|
return self._cached_data.get(key, default)
|
||
|
|
||
|
|
||
|
data = tsd_cache_pickle()
|
||
|
print('Testing property_cache (pickle):\\n--------------------------------')
|
||
|
print(data.one())
|
||
|
print(data.two())
|
||
|
print(data.three())
|
||
|
print(data.four())
|
||
|
print(data.five())
|