Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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))
Ejemplo n.º 8
0
 def __init__(self, q):
     self.q = q
     self.reco = Recommender(cf_settings)
     threading.Thread.__init__(self)
Ejemplo n.º 9
0
        '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()
Ejemplo n.º 10
0
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))