def test_lock(): settings = { 'expire': 3600 * 24 * 100, 'redis': { 'host': 'localhost', 'port': 6379, 'db': 12 }, # recommendation engine settings 'recommendation': { 'update_interval_sec': 4, }, } # register goods r = Recommender(settings=settings) goods_id = 1122 tag = random.choice(tags) r.register(goods_id, tag) # do_lock and expire test[expire 4sec] r.repository.lock(goods_id) key = Repository.get_key_goods_mutex(tag, goods_id) assert r.repository.client.ttl(key) == settings.get('recommendation').get('update_interval_sec') assert r.repository.is_lock(goods_id) time.sleep(1) assert r.repository.is_lock(goods_id) time.sleep(4) assert r.repository.is_lock(goods_id) is False
def test_lock(): settings = { 'expire': 3600 * 24 * 100, 'redis': { 'host': 'localhost', 'port': 6379, 'db': 12 }, # recommendation engine settings 'recommendation': { 'update_interval_sec': 4, }, } # register goods r = Recommender(settings=settings) goods_id = 1122 tag = random.choice(tags) r.register(goods_id, tag) # do_lock and expire test[expire 4sec] r.repository.lock(goods_id) key = Repository.get_key_goods_mutex(tag, goods_id) assert r.repository.client.ttl(key) == settings.get('recommendation').get( 'update_interval_sec') assert r.repository.is_lock(goods_id) time.sleep(1) assert r.repository.is_lock(goods_id) time.sleep(4) assert r.repository.is_lock(goods_id) is False
class TrainingWorker(threading.Thread): # def __init__(self, q): self.q = q self.reco = Recommender(cf_settings) threading.Thread.__init__(self) # def run(self): while True: msg = self.q.get() user_id = msg.get("user_id") buy_items = msg.get("items") for item_id in buy_items: self.reco.register(item_id) self.reco.like(user_id, buy_items) # self.q.task_done() if self.q.empty(): break
def test_trim(): settings = { 'expire': 3600 * 24 * 100, 'redis': { 'host': 'localhost', 'port': 6379, 'db': 12 }, 'recommendation': { 'update_interval_sec': 60, 'search_depth': 10, 'max_history': 30, }, } r = Recommender(settings=settings) key = "hogehoge:list" cli = r.repository.client l = range(1, 1001) # initial cli.delete(key) # set list for x in l: cli.rpush(key, x) # trim assert cli.llen(key) == 1000 r.repository.trim(key, 200, hardly_ever=False) assert cli.llen(key) == 200 # user register user_id = str('aaaaaaaa-aaaa-aaaa-aaaa-000000000005') goods_id = 'ITEM-{}'.format(str(215)) tag = random.choice(tags) r.register(goods_id, tag) _max = 200 for x in xrange(_max): r.like(user_id, [goods_id]) r.update(goods_id) key = Repository.get_key_user_like_history(tag, user_id) print "user hist", r.repository.client.llen(key) assert r.repository.client.llen(key) < _max key = Repository.get_key_index_goods_user_like_history(tag, goods_id) print "index", r.repository.client.llen(key) assert "index", r.repository.client.llen(key) < _max
def test_recommender(): settings = { 'expire': 3600 * 24 * 100, 'redis': { 'host': 'localhost', 'port': 6379, 'db': 12 }, 'recommendation': { 'update_interval_sec': 60, 'search_depth': 500, 'max_history': 1000, }, } r = Recommender(settings=settings) normal_test(r) register(r) like(r) get_all(r) update_index(r) data_consistency(r) del_user(r)
from cf_recommender.recommender import Recommender import random from uuid import uuid4 settings = { 'expire': 3600 * 24 * 100, # redis 'redis': { 'host': 'localhost', 'port': 6379, 'db': 11 }, } _MAX = 10 * 10000 # register new goods tags = ['default', 'book', 'computer', 'dvd', 'camera', 'clothes', 'tag7', 'tag8', 'tag9', 'tag10'] r = Recommender(settings=settings) for x in xrange(1, _MAX): r.register(x, tag=random.choice(tags)) # like goods_ids for x in xrange(1, _MAX): user_id = str(uuid4()) like_goods_ids = [random.randint(1, _MAX) for _x in range(random.randint(1, 100))] r.like(user_id, like_goods_ids, realtime_update=False) if x % 100 == 0: print "{}/{}".format(str(x), str(_MAX))
def __init__(self, q): self.q = q self.reco = Recommender(cf_settings) threading.Thread.__init__(self)
'port': 6379, 'db': 0 }, # recommendation engine settings 'recommendation_count': 10, 'recommendation': { 'update_interval_sec': 600, 'search_depth': 100, 'max_history': 1000, }, } print("Connection to MemCached") mc = memcache.Client(['localhost:11211'], debug=0) recommendation = Recommender(cf_settings) train_queue = Queue.Queue() class TrainingWorker(threading.Thread): # def __init__(self, q): self.q = q self.reco = Recommender(cf_settings) threading.Thread.__init__(self) # def run(self): while True: msg = self.q.get()
settings = { 'expire': 3600 * 24 * 100, # redis 'redis': { 'host': 'localhost', 'port': 6379, 'db': 11 }, } _MAX = 10 * 10000 # register new goods tags = [ 'default', 'book', 'computer', 'dvd', 'camera', 'clothes', 'tag7', 'tag8', 'tag9', 'tag10' ] r = Recommender(settings=settings) for x in xrange(1, _MAX): r.register(x, tag=random.choice(tags)) # like goods_ids for x in xrange(1, _MAX): user_id = str(uuid4()) like_goods_ids = [ random.randint(1, _MAX) for _x in range(random.randint(1, 100)) ] r.like(user_id, like_goods_ids, realtime_update=False) if x % 100 == 0: print "{}/{}".format(str(x), str(_MAX))